In der Datenbank Ich habe eine Tabelle 'Artikel' mit Spalten: 'title
', 'body
', 'published_at
', 'image_name
' (und es gibt auch Laravel des 'created_at
' und 'updated_at
' Spalten).Eine Spalte aktualisiert, aber die Spalte "published_at" wurde ebenfalls aktualisiert? [Laravel 5]
Hier ist meine Migration Artikel Tabelle für die Erstellung von:
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('title');
$table->string('body');
$table->timestamp('published_at');
$table->string('image_name')->nullable;
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
}
und meine Article.php sieht wie folgt aus:
class Article extends Model
{
protected $fillable = ['title', 'body', 'published_at', 'image_name'];
protected $dates = ['published_at'];
public function setPublishedAtAttribute($value)
{
$this->attributes['published_at'] = Carbon::parse($value);
}
public function getPublishedAtAttribute($value)
{
return new Carbon($value);
}
...
Ich wollte 'image_name
' aktualisieren Spalte für jeden Aufzeichnung in der Datenbank (in der Artikel Tabelle) mit Ausnahme der mit ID = 18. Also, in Tinker Ich habe folgende:
DB::table('articles')->whereNotIn('id', [18])->update(['image_name' => 'pic1.jpg']);
und jetzt 'image_name
' ist 'pic1.jpg' überall, außer der Reihe, wo id = 18.
Aber das Problem ist, dass dies auch aktualisiert ‚published_at
‘ Spalte, so datiert jetzt & Zeit für jeden Datensatz in der Datenbank sind die gleiche (außer wenn id = 18).
Warum ist das passiert? Ich habe & Mutatoren definiert, aber wenn ich gut verstehe - sie sollten nichts tun, weil dieser Befehl explizit war und es ist ausschließlich mit der Aktualisierung 'image_name
' Spalte verbunden?
müssen keine Accessoren für das Feld definiert werden, wenn Sie es in '$ dates' Eigenschaft eines' Model' [Beweises] überprüfen (https://laravel.com/docs/5.2/eloquent-mutators#date-mutators), Laravel hat dieses Feld automatisch umgewandelt. – huuuk