我感到困惑,这是 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();
}
Run Code Online (Sandbox Code Playgroud)
在 MySQL 中,
BEGIN
INSERT INTO Activity_Log
SET id = OLD.id, status = OLD.status, description = OLD.description
END
Run Code Online (Sandbox Code Playgroud)
最佳做法是什么?对他们中的一个人未来有没有好的影响?
我更喜欢 Laravel Observer 选项,因为它允许您将业务逻辑保留在您的应用程序中(源代码控制)。此外,您可以使用 Eloquent 将业务逻辑保持在相同的抽象级别。
出于同样的原因,Laravel 引入了任务调度器。它允许您将 cron 条目置于源代码控制之下。
https://laravel.com/docs/5.5/scheduling
过去,您可能已经为需要在服务器上安排的每个任务生成了一个 Cron 条目。但是,这很快就会变得很痛苦,因为您的任务计划不再受源代码控制,您必须通过 SSH 连接到您的服务器以添加额外的 Cron 条目。