waad/laravel-dynamic-observer

无需在提供者中引入,即可调用模型观察者,支持多观察者

安装: 22

依赖: 0

建议者: 0

安全: 0

星星: 5

关注者: 1

分支: 0

开放问题: 0

类型:实用工具

v1.0.0 2023-06-05 19:41 UTC

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');
    }
}

 

🚀 关于我

我是一名后端开发人员...

 

⚖️ 许可证

MIT