Функциональность обновления работает нормально с приведенными ниже кодами. Где я обновляю поле status
как 0
. Значение по умолчанию для этого поля — 1
. Он работает нормально, но поле created_at
также обновляется всякий раз, когда используется эта функция. Обновляется поле updated_at
, а не created_at
.
В моей таблице notification_records
есть поля created_at
и updated_at
.
Если тип данных created_at
равен timestamp()
, это поле используется, если есть новые созданные записи уведомлений, а поле updated_at
предназначено только для модификации.
public function notification(Request $request){
$company_id = auth()->user()->company_id;
DB::connection('mysql')->select("UPDATE notification_records SET status = '0' WHERE company_id = '".$company_id."' AND id = '".$request->ind."'");
}
Что я пытаюсь сделать, так это то, что всякий раз, когда функция используется, единственным полем, которое будет обновлять значение поля между created_at
и updated_at
, является только updated_at
. Есть ли способ сделать это с помощью приведенных выше кодов?
Я удалил «при обновлении CURRENT_TIMESTAMP», и теперь все работает нормально. Также я добавил значение по умолчанию для этих временных меток. На самом деле я использую другое объединение таблиц, поэтому я предпочел использовать классический SQL-запрос, чем использовать красноречивый метод или метод построителя.
вы также можете использовать метод построителя запросов для этого (другое соединение таблицы), но это нормально, я просто говорю, что это не очень хорошая практика. Это не значит, что ты должен это делать или нет.
Спасибо за совет, Заметил. Я изучу эти методы, как только получу новый проект. Так как я уже начал проект с таким кодированием.
Это проблема в laravel 5.2
Вы можете смягчить это, удалив и прочитав метки времени следующим образом:
Вместо $table->timestamps()
;
$table->timestamp('created_at')->default('0000-00-00 00:00');
$table->timestamp('updated_at')->default('0000-00-00 00:00');
Смотрите здесь для вопроса: Изменения Laravel created_at при обновлении
Решение взято отсюда
не рекомендуется писать необработанный sql-запрос, когда для него доступны другие параметры либо с помощью метода построения запросов, либо с помощью красноречивого метода, а также вы в своей структуре таблицы, если вы не установили атрибуты created_at как при обновлении currenttimestamp, тогда он также не будет обновлять его вы можете передать дату в своем поле updated_at, когда вы нажимаете свою функцию