我想确保我在Laravel 5中正确使用了模型事件监听器,而且我没有搞砸任何东西(监听器与处理程序?).我的解决方案工作正常,但我想知道我是否根据Laravel 5的概念和惯例开发.
目标: 当模型保存时,始终将$ issue-> status_id设置为某个值.
在app\Providers\EventServiceProvider.php中
<?php namespace App\Providers;
...
class EventServiceProvider extends ServiceProvider {
...
public function boot(DispatcherContract $events)
{
parent::boot($events);
Issue::saving('App\Handlers\Events\SetIssueStatus');
}
}
Run Code Online (Sandbox Code Playgroud)
在app\Handlers\Events\SetIssueStatus.php中
<?php namespace App\Handlers\Events;
...
class SetIssueStatus {
...
public function handle(Issue $issue)
{
if (something)
{
$issueStatus = IssueStatus::where(somethingElse)->firstOrFail();
}
else
{
$issueStatus = IssueStatus::where(somethingAnother)->firstOrFail();
}
// issue_status() is One-to-One relations with IssueType (belongsTo)
$issue->issue_status()->associate($issueStatus);
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的时间.