Я только что столкнулся с проблемой с временными метками Eloquent (Laravel 5.2.10) по умолчанию. По умолчанию метод $table->timestamps()
дает вам столбцы created_at
и updated_at
в вашей таблице, которые соответственно обновляются.
Однако, когда я пробовал некоторые тестовые записи, я заметил, что при обновлении записи поле updated_at
обновляется, как и должно, но поле created_at
также обновляется: его часы остаются на созданном время, но минуты и секунды обновляются, чтобы соответствовать полю updated_at
.
Если это было слишком многословно, вот пример:
+---------------------+---------------------+
| created_at | updated_at |
+---------------------+---------------------+
| 2016-01-13 17:13:27 | 2016-01-13 22:13:27 |
| 2016-01-13 16:14:41 | 2016-01-13 21:14:41 |
+---------------------+---------------------+
Обратите внимание, что минуты и секунды в полях created_at
и updated_at
совпадают.
Я попытался просмотреть класс Model
, где установлены временные метки, но оказалось, что метод setCreatedAt()
действительно не вызывается при простом обновлении записи.
Почему это происходит?
Как предотвратить изменение поля created_at
? (более важный)