Eloquent(Laravel)查询多对多关系

时间:2015-09-21 12:21:53

标签: mysql laravel eloquent

我有很多关系(Eloquent Laravel),我想按标签过滤项目。

Table_Item        Table_Item_Tag       Table_Tag
ID  Name       ID  Item_id  Tag_id       Id  Name
1  Item A       1    1        1          1   Tag A
2  Item B       2    1        2          2   Tag B
                3    2        1

过滤结果应该是这样的:`

Filter: Name:Tag A&B : Sum of Item 1
        Name:Tag A :   Sum of Item 1

有关查询应该如何的任何想法?我一直在努力获得有两个标签的项目总和

1 个答案:

答案 0 :(得分:0)

假设您的Eloquent关系设置正确,您将需要这些内容:

$tags = ['Tag A', 'Tag B']; // Or get from input or wherever

Item::whereHas('tags', function ($q) use ($tags) {
    foreach ($tags as $tag) {
        $q = $q->where('name', $tag);
    }
})->get();