php - 我应该把模型保存事件监听器放在 laravel 5.1 的什么地方

标签 php laravel eloquent laravel-5.1

Laravel 文档说我应该像这样将模型事件放在 EventServiceProvider boot() 方法中。

public function boot(DispatcherContract $events)
{

    Raisefund::saved(function ($project) {
        //do something
    });

}

但是我有很多模型想听。
所以我想知道将它全部放在 EventServiceProvider 中是否是正确的方法。

最佳答案

是的,没错,EventServiceProvider 是它的最佳位置。

但是你可以创建观察者来保持它的干净。我会给你一个简单的例子。

事件服务提供者

<?php 

namespace App\Providers;

use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

use App\Models\Users;
use App\Observers\UserObserver;

/**
 * Event service provider class
 */
class EventServiceProvider extends ServiceProvider
{
    /**
     * Boot function
     *
     * @param DispatcherContract $events
     */
    public function boot(DispatcherContract $events)
    {
        parent::boot($events);

        Users::observe(new UserObserver());
    }
}

用户观察者

<?php

namespace App\Observers;

/**
 * Observes the Users model
 */
class UserObserver 
{
    /**
     * Function will be triggerd when a user is updated
     * 
     * @param Users $model
     */
    public function updated($model)
    {
    }
}

Observer 将是savedupdatedcreated 等功能的地方。被执行。
有关观察员的更多信息:http://laravel.com/docs/5.0/eloquent#model-observers

关于php - 我应该把模型保存事件监听器放在 laravel 5.1 的什么地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313019/

相关文章:

php - 如何在windows10中安装并运行Apache solr

php - QueryException SQLSTATE[HY000] [2002] 无法连接到 MySQL 服务器

mysql - Eloquent 查询使用关系非常慢

mysql - Laravel 按月获取值(value)

php - Laravel 查询生成器返回对象还是数组?

PHP 将图像显示为 BLOB mysqli

php - 使用 php 将字符串插入到 postgreSQL 表中

nginx - PHP exec() 不运行所有命令

Laravel - CreateMany 如果不存在

laravel - 如何在 Laravel 5 中使用 Dropzone 与现有表单并通过按下按钮提交所有内容