Laravel Eloquent:如何跳过没有任何主题的空类别

时间:2014-08-14 12:00:09

标签: laravel orm eloquent

我正在使用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);

或与此类似的任何其他命令。

问候

艾哈迈德汗

1 个答案:

答案 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();