我想确保我在Laravel 5中正确使用了模型事件监听器,并且我没有搞砸任何事情(监听器vs处理程序?)。我的解决办法工作正常,但我不知道如果我按照Laravel 5的概念,并约定开发在Laravel 5中使用模型事件监听器
目标: 始终设置$发出─> STATUS_ID上一些当模型保存价值。
在app \供应商\ EventServiceProvider.php
<?php namespace App\Providers;
...
class EventServiceProvider extends ServiceProvider {
...
public function boot(DispatcherContract $events)
{
parent::boot($events);
Issue::saving('App\Handlers\Events\SetIssueStatus');
}
}
在应用程序\处理程序\活动\ 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);
}
}
谢谢您的时间。
你只是想在一个模型上使用这个事件,或者你想在多个模型中使用它? –
这个逻辑($ issue-> status_id)我只想用于Issue模型,但是将来我想为这个模型和其他模型添加更多的逻辑。 – zss61890
对此没有正确或错误的答案;这取决于应用程序。因此,投票结束,因为它主要是基于意见的。 –