与病情建立关系?

时间:2016-08-12 10:56:31

标签: laravel laravel-5 eloquent

我有类别和文章表,它们处于多对多的关系中。我在模型上建立了关系。

如何获取类别ID为1的所有文章?

我试过了:

Article::whereHas('category', function ($query) use ($id) {
        $query->where('category_id', $id);
    })->get();

上述作品,但看起来很笨重,是否有更有效的方式来雄辩地做到这一点?

3 个答案:

答案 0 :(得分:0)

您可以使用预先加载技术。

anim.reset();

答案 1 :(得分:0)

以下groupBy代码假设Category::find($id)->articles无论出于何种原因都不是一个选项。

groupBy怎么样?

Article::groupBy('category')
          ->having('category', $id)
          ->get();

答案 2 :(得分:0)

whereHas将返回符合该条件的文章,但不会过滤由相同条件提取的文章。因此,您可以创建一个包含约束的匿名函数,并将其传递给两者 whereHaswith方法:

$filter = function ($query) use ($categoryId) {
    $query->where('category_id', '=', $categoryId);
};

Article::whereHas('category', $filter)
       ->with(['category' => $filter])
       ->get();