Как упомянуто в комментарии @apokryfos, лучше всего сделать это вместо создания события. Вот что вы должны сделать, скажем, ваша таблица subscriptions
с полем subscriptions.approved_date
и модель Subscription
, вот очень чистый способ, которым вы можете сделать для достижения выданного результата:
1. php artisan make:observer SubscriptionObserver --model=Subscription
<?php
namespace App\Observers;
use App\Subscription;
use Carbon\Carbon;
class SubscriptionObserver
{
/**
* Handle the subscription "creating" event.
*
* @param Subscription $subscription
* @return void
*/
public function creating(Subscription $subscription)
{
$subscription->approved_date = Carbon::now()->format('Y-m-d');
}
}
Примечание. Я добавил метод creating()
, по умолчанию его нет.
2. php artisan make:provider SubscriptionServiceProvider
<?php
namespace App\Providers;
use App\Observers\SubscriptionObserver;
use App\Subscription;
use Illuminate\Support\ServiceProvider;
class SubscriptionServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
Subscription::observe(SubscriptionObserver::class);
}
}
Строка уведомления в методе boot()
.
3. Включите провайдера в список config/app.php
<?php
return [
// other elements
/*
|------------------------------
| Autoloaded Service Providers
|------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => [
// other providers
App\Providers\SubscriptionServiceProvider::class,
],
];
Все это можно пропустить и сделать в методе boot()
модели, но указанный способ проще для меня поддерживать.