问题有很多答案 答案很多评论 评论有很多投票 答案有很多投票。
现在,如果我删除一个问题,我想要问题及其答案,并删除所有答案的评论和投票。我所做的一切看起来并不那么优雅。
$question=Question::where(['id'=>$request->id])->first();
$answers=Answer::where(['q_id'=>$request->id])->get();
foreach($answers as $answer)
{
$comments=Comment::where(['answer_id'=>$answer->id])->get();
foreach($comments as $comment)
{
$votes=vote::where(['votable_id'=>$answer->id])
->orWhere(['votable_id'=>$comment->id])
->get();
foreach($votes as $vote)
{
$vote->delete();
}
$comment->delete();
}
$answer->delete();
}
$question->delete();
答案 0 :(得分:0)
您可以使用Laravel的oberservers。因此,删除方法看起来像
public function deleting(Question $user)
{
$question->answers()->delete();
// Etc.
}
我希望你明白这一点。
答案 1 :(得分:0)
您可以在删除时使用模型中的引导方法 它将删除所有关系模型数据。
在问题模型中,您需要关系函数来回答,评论和投票。
现在,你可以使用它。,
30
普通模仿的关系是,
protected static function boot()
{
parent::boot();
static::deleting(function ($question) {
$question->answers()->delete();
$question->comments()->delete();
$question->votes()->delete();
});
}
如果你像往常一样在控制器中删除问题,它也会删除答案,评论和投票。
public function name()
{
return $this->hasMany('App/name', 'fk_id', 'p_id');
}
对关系有任何疑问,请将其用于推荐laravel 5.2 relationship