我感到困惑,这是laravel观察者或MySQL触发器之间的最佳实践。
在Laravel中,我的代码看起来像
public function updated(My_Activity $my_activity)
{
$activity = new Activity_Log();
$activity->activity_id = $my_activity->id;
$activity->status = $my_activity->status;
$activity->description = $my_activity->description;
$activity->save();
}
在MySQL中,
BEGIN
INSERT INTO Activity_Log
SET id = OLD.id, status = OLD.status, description = OLD.description
END
最佳做法是什么?未来对其中一个人有好的影响吗?
答案 0 :(得分:3)
我更喜欢Laravel Observer选项,因为它允许您将业务逻辑保留在应用程序中(源代码管理)。此外,通过使用Eloquent,您可以将业务逻辑保持在相同的抽象级别。
出于同样的原因,Laravel引入了一个Task调度程序。它允许您将cron条目保持在源代码管理下。
https://laravel.com/docs/5.5/scheduling
过去,您可能已为每项任务生成了Cron条目 需要在您的服务器上安排。但是,这很快就会变成一个 痛苦,因为您的任务计划不再受源代码控制 您必须通过SSH连接到服务器才能添加其他Cron条目。