Вы можете использовать Наблюдатели .
Например, чтобы наблюдать модель Issue
, вы можете сгенерировать Observer следующим образом:
php artisan make:observer IssueObserver --model=Issue
Это создаст наблюдателя, где вы сможете прослушивать множество событий модели.
<?php
namespace App\Observers;
use App\Issue;
class IssueObserver
{
/**
* Handle the Issue "updating" event.
*
* @param \App\Issue $Issue
* @return void
*/
public function updating(Issue $issue)
{
if($issue->status == 'complete') {
$issue->issue_id = null;
}
}
}
Чтобы зарегистрировать Обозреватель, вам необходимо добавить это к AppServiceProvider@boot()
<?php
namespace App\Providers;
use App\Issue;
use App\Observers\IssueObserver;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Issue::observe(IssueObserver::class);
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}
Вы также можете просто сделать это в вашей App/Issue
модели.
public static function boot()
{
parent::boot();
static::updating(function ($issue) {
if($issue->status == 'complete') {
$issue->issue_id = null;
}
})
}
Очевидно, вам нужно будет слушать события, которые соответствуют вашим потребностям.Это всего лишь пример.Вы можете посмотреть все доступные модели событий здесь .