gpt4 book ai didi

php - 更新了一列但 'published_at' 列也更新了? [拉维尔 5]

转载 作者:行者123 更新时间:2023-11-29 02:17:10 24 4
gpt4 key购买 nike

在数据库中,我有一个表“articles”,其中包含以下列:“title”、“body”、“published_at” ', 'image_name'(还有 Laravel 的 'created_at' 和 'updated_at' 列)。

这是我创建articles 表的迁移:

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');
});
}

我的 Article.php 看起来像这样:

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);
}
...

我想为数据库中的每条记录(在 articles 表中)更新“image_name”列,id=18。因此,在 Tinker 中,我执行了以下操作:

 DB::table('articles')->whereNotIn('id', [18])->update(['image_name' => 'pic1.jpg']);

现在“image_name”在所有地方都是“pic1.jpg”,除了 id=18 的行。

但是,问题是这也更新了“published_at”列,所以现在数据库中每条记录的日期和时间都是相同的(除了 id=18).

为什么会这样?我定义了 AccessorsMutators 但如果我理解得很好 - 它们不应该做任何事情,因为这个命令是明确的并且它专门与更新 'image_name'列?

最佳答案

嘿,这不是 laravels 的问题。

可能是你的数据库中有时间戳,所以它会自动更改日期。

只是改变

$table->timestamp('published_at');

$table->dateTime('published_at');

然后刷新您的迁移。

关于php - 更新了一列但 'published_at' 列也更新了? [拉维尔 5],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com