【发布时间】:2020-01-09 16:22:18
【问题描述】:
我有 cmets 表,其中有 parent_id
这是评论表sub_comments 关系。
public function sub_comments()
{
return $this->hasMany(self::class, 'parent_id');
}
此代码返回所有 cmets 以及相关的所有子 cmets
Comment::with('sub_comments')->get();
但是当 sub-cmets 是单一的时,我希望所有的 cmets 也都是 sub-cmets。这意味着如果评论有 2 个或更多的 cmets,我不想得到那个子 cmets。 现在我使用这段代码
$oneSubcommentCommentIds = Comment::has('sub_comments', '=', 1)->pluck('id');
Comment::with([
'sub_comments' => function ($q) use ($oneSubcommentCommentIds) {
$q->whereIn('parent_id', $oneSubcommentCommentIds);
}
])->get();
但这会产生一个额外的查询。
【问题讨论】:
-
所以您想加载所有 cmets,但如果只有一个
sub_comment,则只加载关系sub_comments?这没有意义,并且您无法确定关系的计数不加载关系... -
是的,你是对的
标签: php laravel laravel-5 eloquent laravel-5.8