gpt4 book ai didi

php - Laravel 模型的自定义 "touches"功能

转载 作者:行者123 更新时间:2023-11-28 23:31:39 24 4
gpt4 key购买 nike

我在我的数据库中有很多关系,在子模型中我有这样定义的touches数组

 protected $touches = ['parent'];

我希望做的事情与这两个问题中描述的类似:

但略有不同,我希望在子模型发生更改时更新父模型上的 bool 列。这适用于触摸,但我不知道如何使用自定义属性来实现。

我已经在我的父模型中试过了,但没有成功:

public static function boot()
{
parent::boot();

static::updating(function ($table) {
$table->is_finished = true;
});
}

最佳答案

根据 this thread似乎 updating() 事件仅在模型“脏”时触发,即具有已更改值的字段,因此需要更新。因此,如果父模型上的数据没有更改,则可能是您的代码永远不会执行。我的猜测是,即使父级上的时间戳被触及,它也被排除在可被视为脏的属性列表之外。

您可能只是将此代码添加到子模型中:

// this is whatever property points to the parent model
public function parent() {
return $this->belongsTo('App\Parent');
}

// this overrides the update() method in the Eloquent\Model class
public function update($attributes = Array, $options = Array) {

parent::update($attributes, $options);

$this->parent->is_finished = true;
$this->parent->save();
}

尚未对此进行测试,但不明白为什么它不起作用。

关于php - Laravel 模型的自定义 "touches"功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147845/

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