waad / laravel-dynamic-observer
无需在提供者中引入,即可调用模型观察者,支持多观察者
v1.0.0
2023-06-05 19:41 UTC
Requires
- php: >=7.4
This package is not auto-updated.
Last update: 2024-09-24 10:38:35 UTC
README
通过使用特例 HasObserver 直接从模型调用模型观察者,无需引入任何提供者,支持多观察者。
🤞安装
使用以下命令使用 composer 安装此包
composer require waad/laravel-dynamic-observer
💯 使用方法
为了正确使用此包,请按照以下步骤操作,以满足您的需求
- 将动态连接到
App\Observers命名空间中名为WorksObserver的观察者
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Waad\Observer\HasObserver; class Work extends Model { use HasObserver; ...... }
- 如果使用不同名称的观察者类,请使用
$observer属性
<?php namespace App\Models; use App\Observers\MyWorkObserver; use Illuminate\Database\Eloquent\Model; use Waad\Observer\HasObserver; class Work extends Model { use HasObserver; public static $observer = MyWorkObserver::class; }
- 如果使用多个不同名称的类观察者,请使用
$observer属性
<?php namespace App\Models; use App\Observers\MyWorkObserver; use App\Observers\OurWorkObserver; use Illuminate\Database\Eloquent\Model; use Waad\Observer\HasObserver; class Work extends Model { use HasObserver; public static $observer = [MyWorkObserver::class, OurWorkObserver::class]; }
🍔 示例观察者
- 要创建观察者,请使用此命令
php artisan make:observer YourModelObserver --model=YourModel
⚠️ 将生成此类文件,如果功能不足,请复制此示例
<?php namespace App\Observers; use App\Models\Work; class WorkObserver { public function creating(Work $work) { // This function is called when a new model instance is being created. $work->title = $work->title . "....."; } public function created(Work $work) { // This function is called after a new model instance is successfully // created and saved to the database. $work->users()->attach([1,2]); } public function updating(Work $work) { // This function is called when an existing model instance is being updated. $work->status_color = $work->status ? 'green' : 'red'; } public function updated(Work $work) { // This function is called after an existing model instance is successfully // updated and saved to the database. $work->users()->sync([1,3]); } public function saving(Work $work) { // This function is called when a model instance is being saved // (either created or updated). $work->title = $work->title . "....."; } public function saved(Work $work) { // This function is called after a model instance is successfully saved // (either created or updated). $work->status_string = 'working'; $work->save(); } public function deleting(Work $work) { // This function is called when an existing model instance is being deleted. $work->users()->detach(); } public function deleted(Work $work) { // This function is called after an existing model instance is successfully deleted } public function restoring(Work $work) { // This function is called when a "soft-deleted" model instance is being restored. } public function restored(Work $work) { // This function is called after a "soft-deleted" model instance is successfully restored. } public function retrieved(Work $work) { // This function is called after a model instance is retrieved from the database. $work->increment('views'); } }
🚀 关于我
我是一名后端开发人员...
-
作者: Waad Mawlood