WhereIn和关系

时间:2015-03-11 16:34:00

标签: php laravel eloquent

我有3张桌子:

  • 文章
  • 标签
  • article_tag

它们与枢轴有很多种关系。

我需要查询此内容以获取所有包含标记数组的文章:

Article::with('tags')->whereIn('id', $tagIdArray)->get();

上述问题是它返回id为$ tagIdArray的文章。如何约束结果以便我在标签关系中使用whereIn?

2 个答案:

答案 0 :(得分:3)

你有正确的想法,但有点失控。使用with('tags')函数只需将相关标签拉出您的文章,在with()函数仍然适用于文章模型后链接的查询。

要查询关系,您可以执行以下操作

$tagIdArray = [1, 3, 5, 7, 9];

$articles = Article::whereHas('tags', function($query) use ($tagIdArray) {
    /**
      * Now querying the Tags relation. So anything in this closure will query the Tags
      * relation, but outside of the closure, you're back to querying the Articles.
      */
    $query->whereIn('id', $tagIdArray);
})->get();

Laravel关于查询关系http://laravel.com/docs/4.2/eloquent#querying-relations

的文档

答案 1 :(得分:0)

这就是我通过在模型的关系级别过滤数据来提取产品的方式。

$youMayAlsoLike  = Category::whereHas('product', function($query)
   {
      $query->whereIn('category_slug', ['gift-sets','multi-shade-sticks','eye pencil']);
   })
   ->inRandomOrder()
   ->take(10)
   ->get();