shooka / laravel-modelevents
让服务提供者处理您的模型事件
v0.3.0
2016-09-22 18:25 UTC
Requires
- php: >=5.5.0
- laravel/framework: 5.1.*|5.2.*|5.3.*
Requires (Dev)
- orchestra/testbench: ^3.3
- phpunit/phpunit: ^5.5
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-14 19:09:20 UTC
README
你是否曾想过将 eloquent 模型事件放在哪里?现在应用监听器到您的模型上比以往任何时候都要简单。
安装
通过运行以下命令将此包添加到您的 Laravel 项目中:
composer require shooka/laravel-modelevents 0.3.*
为了发布必要的文件,将 ServiceProvider 添加到 config/app.php 中的提供者数组中
Shooka\ModelEvents\ServiceProvider::class,
接下来,运行以下命令来发布文件:
php artisan vendor:publish --provider="Shooka\ModelEvents\ServiceProvider"
这会发布两个文件
- 一个包含一个示例类
ModelEvents/UserEvent.php的文件,该类展示了未来的ModelEvent应该是什么样子。 - 一个
Providers/ModelEventServiceProvider.php文件,其中包含一个空的监听器数组,将实际的 Eloquent 模型事件映射到ModelEvent类。
由于新的 ModelEventServiceProvider 已被发布,您可以将其添加到提供者数组中
App\Providers\ModelEventServiceProvider::class,
不要忘记从数组中 移除 原来的一个
Shooka\ModelEvents\ServiceProvider::class,
使用方法
此包利用了 Laravel 的一些出色功能,这意味着它在新旧 Laravel 项目中都很容易使用。
默认支持的模型事件包括标准 Laravel 模型事件:creating、created、updating、updated、saving、saved、deleting、deleted、restoring 和 restored
自定义事件
如果您想定义任何自定义事件,它们应该添加到 $observables 数组中
class Product extends Model { protected $observables = [ 'sold', 'shipped', 'returned', ... ]; }
这些事件现在在 ModelEvent 中是可观察的
class ProductEvent extends ModelEvent { public function returned($product) { // Increase stock count } }
激活监听器
要为 eloquent 模型添加监听器,只需在 ModelEventServiceProvider 中将模型映射到 ModelEvent
protected $listeners = [ \App\Product::class => \App\ModelEvents\ProductEvent::class, ];
ModelEvent 可以放置在任何位置,但在这个例子中,它被放在了 安装 章节中通过命令发布的 ModelEvents 文件夹中。