Laravel:删除数据透视表中一行的最佳方法是什么?

时间:2017-01-14 04:24:06

标签: laravel laravel-5 eloquent laravel-5.3

我在Laravel应用程序中有3个模型:

  • User
  • Question
  • Alternative

一些模型关系:

  1. Question可以包含多个Alternative
  2. Alternative属于一个Question
  3. 有一个数据透视表,用户可以存储答案。它存储user_idalternative_id

    在数据透视表中,如何删除特定Question的所有答案? (我有question_id

1 个答案:

答案 0 :(得分:2)

您可以使用分离以及同步方法,但您必须先在模型中定义关系,例如

public class Question extends Model{

    public function alternatives(){
       return $this->hasMany(Alternative::class);
    }
}


public class Alternative extends Model{

    public function users(){
       return $this->belongsToMany(User::class);
    }

}

而不是

$question = Question::findOrFail('question_id');

$queston->alternative()->user()->sync();

$question->alternative()->user()->detach();