2016-09-27 4 views
1

을 통해 내가 최대 10 개 항목의 목록을 retruns 다음 쿼리가 Laravel :각 컬렉션 항목

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

이 쿼리는 TypeEffects의 컬렉션을 반환합니다. 각 유형 효과에는 type_id 열이 있습니다.

내 데이터베이스에 Defender 개체가 있는데, type1_idtype2_id 개의 열이 있습니다.

주요 목표 각 컬렉션 항목과 동일 자신의 type1_id 또는 type2_id 열을 내 $type1Counters 쿼리에있어 TYPE_ID

나는 모든 수비수를 얻을 필요가, . 내 $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 모든 possibles type_ids으로 배열 될 것이다. 이제 해당 유형의 수비수를 모두 가져올 수 있습니다.

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

고마워요! $ type1Countesr 배열에 배열 형식이 있다고 가정하고 결국에는 그 형식의 모든 데이터를 모든 배열 형식 (모든 TypeEffects, ID 추출뿐 아니라)과 함께 반환하려고합니다. 나는 뽑지 않고 다른 동일한 질의를하지 않고 어떻게 할 수 있습니까? – TheUnreal

관련 문제