我正在使用Laravel和Eloquent构建论坛模块。我在ForumCategory和ForumTopic模型之间设置了一对多的关系。一切都好。我可以使用以下命令列出这些类别中发布的类别和主题:
$categories = ForumCategory::all();
foreach($categories as $category) {
echo $category->name;
echo $category->topics()->count();
}
唯一的问题是,我不希望第一个命令返回没有帖子的类别?目前,此代码列出了空类别,其中包含0个主题。
我想要以下命令:
$categories = ForumCategory::all();
类似于:
$categories = ForumCategory::with/having('ForumTopic', '>', 0);
或与此类似的任何其他命令。
问候
艾哈迈德汗答案 0 :(得分:1)
你可以使用has或whereHas来获得更多高级内容。如果您在ForumTategory模型中与ForumTopic的关系被称为"主题"它是这样的。
至少有一个主题:
$categories = ForumCategory::has('topics')->get();
3个或更多主题:
$categories = ForumCategory::has('topics', '>=', 3)->get();
主题为主题的类别为foo:
$categories = ForumCategory::whereHas('topics', function($q)
{
$q->where('subject', '=', 'foo');
})->get();