Вы можете моделировать события , чтобы инициировать действие после удаления записи Post
. В вашей Post
модели вы можете добавить свойство $dispatchesEvents
:
protected $dispatchesEvents = [
'deleting' => \App\Events\PostDeleting::class,
];
После этого вы можете создать новое событие:
php artisan make:event PostDeleting
Следует добавить новый файл событий (app\events\PostDeleting.php
).
Здесь вы можете определить данные, которые будут переданы в прослушиватель событий.
<?php
namespace App\Events;
use App\Post;
use Illuminate\Queue\SerializesModels;
class PostDeleting
{
use SerializesModels;
public $post;
/**
* Create a new event instance.
*
* @param \App\Post $post
*/
public function __construct(Post $post)
{
$this->post = $post;
}
}
После этого вам нужно будет создать прослушиватель событий (который будет прослушивать удаляемую запись):
php artisan event:listener PostDeleting
Это создаст слушателя (app/listeners/PostDeleting.php
). Здесь вы определяете функциональность, которая запускается после удаления Post
(при этом используется переменная, определенная в событии :
<?php
namespace App\Listeners;
use App\Events\PostDeleting as PostDeletingEvent;
class PostDeleting
{
/**
* Handle the event.
*
* @param \App\Events\PostDeleting $event
* @return mixed
*/
public function handle(PostDeletingEvent $event)
{
$event->user->likes()->delete(); // or whatever relation you need to delete.
}
}