Я использую Laravel 5.1. Чтобы сделать это просто, у меня есть следующий кодEloquent model not update updated_at timestamp
миграции:
Schema::create('sitemap_data', function (Blueprint $table) {
// Primary and foreign keys
$table->increments('id');
$table->string('postUrl');
// Database functions
$table->timestamps();
});
И это код где-то еще я использую
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->save();
Теперь, согласно документации Laravel
Опять же, обновленная временная метка обновляется автоматически, поэтому нет необходимости вручную устанавливать ее значение
Значение updated_at должно быть обновлено в таблице. Однако этого не происходит.
Он устанавливается только на первую вставку, но не на обновление. Когда я делаю это вручную, вот так:
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->updated_at = Carbon::now();
$sitemapData->save();
это работает. Однако документы говорят, что это должно произойти автоматически, так что здесь не так?
Я искал некоторые сайты на StackOverflow для этого вопроса, но те, которые я нашел, где для Laravel 3 или 4.1, 4.2 и т.д.
Как бы я сделать это правильно?
Если нет никаких изменений в данных записи, то она не будет обновляться ..... это просто ненужные накладные расходы .... и '$ sitemapData = SitemapData :: firstOrNew ([ «postUrl» => $ post ]); $ sitemapData-> save(); 'никоим образом не изменяет данные записи –
Ах, ладно! Я думал, что update_at обновляется независимо от изменений или нет. Вы правы, что я не вносил изменений, я просто хотел проверить, работает ли это или нет. Благодарю. Теперь это имеет смысл – Musterknabe
Нет, здесь Laravel пытается быть умным и избегать расходов на вызов базы данных, если нет необходимости –