2015-12-27 2 views
2

Я использую Eloquent для обработки базы данных, когда я обновляю запись с помощью метода обновления created_at Временная метка изменена, как предотвратить это?Eloquent update method change created_at timestamp

$post = Post::update([ 
    'name' => $name 
]); 

updated_at метка времени совершенно

+0

Вы хотите обновить все сообщения? Каково первоначальное значение 'created_at' для записи, которую вы обновляете? –

+0

Нет, я обновляю определенную запись, но только для демонстрации, начальное значение - 2015-12-23 00:24:53 после обновления 2015-12-27 05:29:59 – user3266289

ответ

2

работает В случае, если у вас нет каких-либо пользовательских настроек в вашей модели. Вы можете обновить запись так:

$id = 5; // here put id of record you want to update 
$post = Post::findOrFail($id); 
$post->name = $name; 
$post->save(); 

Используя этот код должен быть обновлен только name и updated_at метку времени (и не created_at). Если created_at обновляется также это означает, что вы можете иметь некоторые пользовательские настройки модели или:

  • вы можете иметь триггеры базы данных, что изменение created_at при обновлении записи
  • Вы могли бы прописали некоторые события, которые меняют created_at при обновлении записи
  • убедитесь, что ваш created_at поле в posts таблицы в базе данных не определена как CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - таким образом, каждый раз, когда вы обновить запись, created_at также будет обновлен до текущей даты-времени

Вы также должны убедиться, что у вас нет для Post модели что-то вроде этого:

const UPDATED_AT = 'created_at'; 

Если бы также объяснить, почему created_at изменяется при обновлении записи.

+0

То же самое. это моя модель 'code ' class Post extends Eloquent { protected $ table =' posts '; защищен $ заполняемых = [ 'имя', 'name_arabic', 'метки', 'tags_arabic', 'категория', 'category_arabic', 'содержание', 'content_arabic', «post_thumb ', "осадка" ]; – user3266289

+0

Итак, как я уже сказал, вам нужно проверить триггеры базы данных и другие действия в Laravel, потому что простое обновление не будет обновлять столбец 'created_at'. Пожалуйста, убедитесь, что столбец 'created_at' в базе данных также является только меткой времени, не устанавливая' CURRENT_TIMESTAMP' при обновлении записи - вы не должны иметь что-то вроде этого 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' –

+0

@ user3266289 Не могли бы вы рассказать, в чем проблема? –

Смежные вопросы