JohnDaniels
@JohnDaniels

Как удалять связанные модели в Laravel?

Допустим есть модели Post и Comment, связь один-ко-многим.
Есть ли способ "изкоробки" удалить все связанные комментарии при удалении поста?
Пробовал
Post::with('comments')->where('id',  '=',  $id)->delete();

удаляет только посты.
  • Вопрос задан
  • 5442 просмотра
Решения вопроса 3
pxz
@pxz
✔ Совет: Вам помогли? Отметьте ответы решением.
Как ответили выше,
$article->comments()->delete();
Вызвать можно удобно с помощью событий модели.

В Вашей модели:
// ...

public function boot()
{
     Post::deleted(function ($post) {
          $post->comments()->delete();
     });
}


Почитать подробнее можно тут:
https://laravel.com/docs/5.3/eloquent#events
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
FOREIGN KEYS - единственный верный способ сделать это
Ответ написан
Комментировать
zvermafia
@zvermafia
WebDev
$article = Post::findOrFail($id);

$article->comments()->delete();
$article->delete();

// Лучше конечно использовать events
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы