【发布时间】:2020-09-26 10:45:27
【问题描述】:
在保存模型时,我有一个错误,即 slug 属性没有默认值。 我创建了一个 setSlugAttribute 突变器,但它又给了我错误。
//Controller save method inside
* * *
Task::create($request->all());
* * *
//Task model
public function setSlugAttribute(){
$this->attributes['slug'] = Str::slug($this->title, '-');
}
我该如何解决?它确实通过使用观察(保存)来修复,不是吗?另一个想法?
我已经创建了一个 TaskObserver 并在 ServiceProvider 中设置了它。
在观察者中,updated(Task $task) 和updated(Task $task) 方法不起作用! 但是创建的方法有效。
//Update method inside:
$array = $request->all(['title', 'description', 'deadline', 'budget','guest_token']);
$task = Task::where('id',$request->id)->update($array);
//I am waiting working of udate observer but it don't
//TaskObserver
public function updating(Task $task)
{
dd("updating");
}
public function updated(Task $task)
{
dd("updated");
}
【问题讨论】:
-
能否分享一下产生错误的代码,以及实际的错误?
-
@CanVural 现在可以控制了吗?
-
您在构建器而不是模型本身上调用
update,您正在对数据库进行直接UPDATE查询,它不涉及模型,因此没有事件
标签: php laravel eloquent mutators