Sto usando Laravel 5.1. Per rendere più semplice, ho il seguente codiceModello Eloquent che non aggiorna aggiornato_at timestamp
Migrazione:
Schema::create('sitemap_data', function (Blueprint $table) {
// Primary and foreign keys
$table->increments('id');
$table->string('postUrl');
// Database functions
$table->timestamps();
});
E questo è il codice da qualche altra parte che sto utilizzando
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->save();
Ora, in base alla documentazione laravel
Anche in questo caso, il timestamp aggiornato_at verrà automaticamente aggiornato, quindi non è necessario impostare manualmente il suo valore
Il valore updated_at deve essere aggiornato nella tabella. Tuttavia, questo non sta accadendo.
Viene impostato solo sul primo inserto, ma non sull'aggiornamento. Quando lo faccio manualmente, come questo
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->updated_at = Carbon::now();
$sitemapData->save();
funziona. Tuttavia, i documenti dicono che questo dovrebbe accadere automaticamente, quindi cosa c'è di sbagliato qui?
Ho cercato alcuni siti su StackOverflow a questa domanda, ma quelli che ho trovato dove per laravel 3 o 4.1, 4.2 ecc
Come dovrei farlo correttamente?
Se non ci sono modifiche ai dati record, allora non sarà aggiornato ..... questo è solo un inutile sovraccarico .... e '$ sitemapData = SitemapData :: firstOrNew ([ 'posturl' => $ post ]); $ sitemapData-> save(); 'non modifica in alcun modo i dati del record –
Ah okay! Pensavo che update_at venga aggiornato indipendentemente dalle modifiche o meno. Hai ragione, che non ho apportato modifiche, volevo solo verificare se funziona o meno. Grazie. Ora questo ha senso – Musterknabe
No, è qui che Laravel sta cercando di essere intelligente ed evita le spese di una chiamata al database se non è necessario –