2016-09-27 75 views
1

我有以下查詢其retruns多達10項的列表:Laravel其中通過每個收集項目

$type1Counters = TypeEffects::where('defence',$defender->type1_id) 
     ->where("modifier",'>',1) 
     ->get(); 

該查詢返回TypeEffects的集合。每個類型的影響都有type_id列。

我在我的數據庫中有Defender對象,它有type1_idtype2_id列。

主要目標

我需要讓所有的防守球員,WHERE他們type1_idtype2_id列等於每個收集項目TYPE_ID我在$type1Counters查詢得到。我一直在想通過我的$type1Counters循環,但後來我結束了這樣的事情:

foreach ($type as $type1Counters) { 
$x++; 
$defender[$x] = Defender::where('type1_id',$type->type_id) 
->orWhere('type2_id',$type->type_id); 
} 

但後來我結束了集合數組,而我需要所有的人都在一個集合,以便通過中後衛power專欄。

任何想法如何我可以得到所有的捍衛者與我的$type1Counters查詢中找到的類型的一個集合?

回答

1

您可以使用方法whereIn,它將查找通過它的數組中的所有項目。

$type1Counters = TypeEffects::where('defence',$defender->type1_id) 
     ->where("modifier",'>',1) 
     ->groupBy('type_id') 
     ->pluck('type_id'); 

$type1Counters將與所有的候選條件type_ids陣列。 現在你可以獲取所有類型的防禦者:

Defender::whereIn('type1_id', $type1Counters) 
    ->orWhereIn('type2_id',$type1Counters) 
    ->get(); 
+0

謝謝!假設我在$ type1Countesr數組中有一個數組類型,並且最後我想返回該數組中所有包含所有數據的類型(所有TypeEffects,不僅是ID拔取)。如何在沒有采摘的情況下製作另一個相同的查詢? – TheUnreal