例如
namespace App\Observers;
use App\Models\User;
class UserObserver
{
public function saving(User $user)
{
$user->epoch = time();
$user->save(); // or even this
return $user; // should I do this or not?
}
}
在调用模型事件时,我找不到任何关于模型事件的好文档。
答案 0 :(得分:0)
可用的laravel模型事件是论文:
#⇒ 546f5d23e0cadad2d4158911ef72f095d[...]
事件结束后会调用retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored
个
在事件发布之前调用ed
一个
例如:
创建会在创建之前影响您的模型(对象不在数据库中,所以没有id) 创建后,在创建数据库之后调用它(你可以获得他的id)
当你使用它时:
$模型 - >保存();
你可以这样思考:
$ model->保存(做某事) - > save(); $模型 - >保存() - >保存();
答案 1 :(得分:0)
我也无法在此找到适当的文档,但经过一些测试后,我可以确认您实际上不需要返回该对象或其他任何内容。
作为参数 IS 传入的对象正在被修改的对象,因此,在您的情况下,您不需要最后两行中的任何一行。只需设置$user->epoch
的值并继续前进。
那就是说,你可能会更好地在mutator中设置这个值。为此,只需将以下内容添加到User
模型中:
public function setEpochAttribute() {
$this->attributes['epoch'] = time();
}
同样,不需要返回任何东西。
我发现在mutators中维护属性值很有帮助,因为在测试中你不一定保存到数据库中,值仍然是正确的。也许在提交数据库之前尝试将观察者视为最后一道防线,或者在数据库操作之后将其视为第一匹门(for -ed actions)。
感谢Borja对此的投入。没有他就无法回答: - )