小编zss*_*890的帖子

在Laravel 5中使用模型事件监听器

我想确保我在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)

感谢您的时间.

php laravel eloquent

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

eloquent ×1

laravel ×1

php ×1