Поскольку detach()
доступен только для отношений «многие ко многим», вам необходимо изменить способ удаления отношений.
Из вашей диаграммы отношений кажется, что отношения между Poll
и Answer
не являются многим для многих, что имеет смысл.Тем не менее, Poll
и User
имеют отношение многие ко многим.
Таким образом, должно работать следующее:
public function destroy($id)
{
$poll = Poll::findOrFail($id);
$poll->answers()->delete();
$poll->users()->detach();
$poll->delete();
}
Или: Это хороший случай для использования События модели .Вы можете добавить событие deleting()
к вашей модели App\Poll
.
class Poll extends Model
{
//
//
public static function boot() {
parent::boot();
static::deleting(function($poll) {
$poll->answers()->delete();
$poll->users()->detach();
});
}
}
... и затем каждый раз, когда вы удаляете опрос, вам просто нужно сделать следующее.
public function destroy($id)
{
return Poll::findOrFail($id)->delete();
}
Отношения будут удалены автоматически.