Не удается обновить столбец «Updated_at» в красноречивом laravel

Я все еще новичок в этой среде laravel, поэтому у меня возникла проблема, когда я не смог обновить столбец «updated_at», который автоматически создается миграцией laravel. Я хочу изменить значение на текущее время, когда я нажимаю кнопку. Я пробовал несколько способов из похожих вопросов, но, похоже, это не работает, например, с помощью «-> update ()», «-> save ()» или «-> touch ()».

синтаксис для обновления в контроллере

$check = \DB::table('queueTable')->where('category',$catName2)->where('status','Active')->where('skipped','0')->whereDate('created_at','=',now())->orderBy('queue','ASC')->limit(1);
$counter = \DB::table('queueTable')->where('category',$catName2)->where('status','Inactive')->whereDate('created_at','=',now())->count();
\DB::table('CurrentQueue')->where('id', 2)->update(['DoneQueue' => $counter+1]);
$check->update(['status' => 'Inactive']);
$check->update(['updated_at' => now()->format('Y-m-d H:i:s')]);

моя миграция

Schema::create('queueTable', function (Blueprint $table) {
  $table->id();
  $table->string('category');
  $table->integer('queue')->default('0');
  $table->string('status');
  $table->integer('skipped')->default('0');
  $table->timestamps();
});

было бы очень признательно, если бы кто-нибудь мог любезно объяснить, где я ошибаюсь. Заранее спасибо.

Я хочу обновить значение «updated_at» до текущего времени, когда я нажимаю кнопку

updated_at поле обновляется при каждом обновлении базы данных (конкретный столбец). Вам не нужно обновлять его вручную.
Vüsal Hüseynli 09.02.2023 11:40

если вы позвоните $movel->save() или $model->update(), updated_at будет автоматически обновлен

silver 09.02.2023 11:47

Посмотрите документацию: «По умолчанию Eloquent ожидает, что столбцы created_at и updated_at существуют в соответствующей таблице базы данных вашей модели. Eloquent автоматически установит значения этих столбцов при создании или обновлении моделей». Красноречивый: временные метки

Peter Krebs 09.02.2023 11:48

но по какой-то причине мой столбец updated_at не обновляется автоматически, поэтому я спрашиваю, есть ли какой-либо возможный способ изменить таблицу

Wedman Hutahaean 10.02.2023 02:45

это только вставка значения (временных меток) в столбцы «created_at» и «updated_at» одновременно с записью данных в таблицу в первый раз.

Wedman Hutahaean 10.02.2023 02:52

Вы уверены, что $check на самом деле результат? Потому что ->whereDate('created_at','=',now()) кажется очень рискованным способом что-то выбрать. Может быть, $check ничего не соответствует, и поэтому ваш update() ничего не делает?

Don't Panic 10.02.2023 03:58

@Don'tPanic, $check действительно возвращает значение, которое я хочу, и я использовал дамп var для проверки, но если вы считаете, что это может быть причиной, я попытаюсь найти другой способ получить результат.

Wedman Hutahaean 10.02.2023 04:43
Кажется, что автоматическое обновление временных меток работает только в том случае, если вы используете модели, а не при использовании построителя запросов, как вы. Документация подтверждает это: «Eloquent автоматически установит значения этих столбцов при создании или обновлении моделей».
Don't Panic 10.02.2023 22:40

Отвечает ли это на ваш вопрос? Красноречивая модель не обновляется updated_at timestamp

Don't Panic 10.02.2023 22:40

Да, после некоторых попыток кажется, что мой столбец updated_at не обновляется, потому что я использую построитель запросов вместо модели. Спасибо за ваше любезное объяснение.

Wedman Hutahaean 13.02.2023 07:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
10
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновите свою запись с помощью модели, она автоматически обновит «updated_at». Измените код в вашем контроллере:

$check = queueTable::where('category',$catName2)->where('status','Active')->where('skipped','0')->whereDate('created_at','=',now());

$counter = $check->count();
$check = ->orderBy('queue','ASC')->first();

CurrentQueue::where('id', 2)->save(['DoneQueue' => $counter+1]);
$check->save(['status' => 'Inactive']);

Примечание. Если вы не используете модель, сначала создайте Models queueTable, CurrentQueue

Хорошо, спасибо, попробую этот метод, отпишусь о результате

Wedman Hutahaean 10.02.2023 04:47

Другие вопросы по теме