2015-09-21 87 views
0

我有多對多的關係(Eloquent Laravel),我想通過標籤過濾項目。雄辯(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 

上查詢應該如何看起來像任何想法?我一直努力讓誰擁有這兩個標籤

+0

這不是很清楚你問這裏有什麼,你可能想擴展到更多的細節。 –

+0

@JamesFlight試想一下,如果您有選擇向客戶端添加標籤的選項。我想篩選具有TagA的客戶,擁有TagB的客戶以及同時擁有TagA和TagB的客戶。結果應該是具有TagA的客戶的總數,具有TagB的客戶的總數以及同時具有TagA和TagB的客戶的總數 – Granit

+0

您的客戶的總和是什麼意思?有標籤的客戶的集合/數組? –

回答

0

假設你的口才關係正確設置項目的總和,你會想沿着這些路線的東西:

$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();