在laravel中使用parent_id实现了五个嵌套注释,还有另一个表票用于存储相关数据。
我在comments模型中定义了hasMany关系。现在,当我删除评论时,它也应该删除所有回复和投票。
要删除我使用的投票
$review->votes()->delete();
效果很好。但是我坚持删除嵌套答复的投票。
如果我使用foreach循环,如何在所有动态级别中循环。
public function deletereview($id=null){
$review = Review::find($id);
foreach($review->replies as $reply){
$reply->votes()->delete();
//how to do this for all levels?
$reply = $reply->votes(); // this doesn't work
}
return back();
}
请提供正确的操作方法建议。
注意:我已经阅读了迁移中的层叠选项,但是对于嵌套注释(答复及其相关数据的答复)没有任何解释。
谢谢 -维杰
答案 0 :(得分:1)
<section id="section_music" class="section-padding">
<div class="section">
<div class="container mb-4">
答案 1 :(得分:0)
我建议为此使用观察器。
https://laravel.com/docs/5.8/eloquent#observers
public function deleted(Review $review)
{
foreach($review->replies as $reply){
$votes = $reply->votes;
Votes::destroy($votes)
}
销毁方法允许您删除多个模型。 对于任何下一级别,在这种情况下,您都必须使用另一个foreach循环。
$ reply = $ reply-> votes();无法使用,因为您应该使用
$votes = $reply->votes;
//or
$votes = $reply->votes()->get();