2016-09-27 2 views
1

У меня есть следующий запрос, который Retruns список до 10 пунктов:Laravel, где каждый пункт сбора

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

Этот запрос возвращает коллекцию TypeEffects. Каждый тип имеет столбец type_id.

У меня есть объект Defender в моей базе данных, который содержит type1_id и type2_id столбцы.

Главная цель

Мне нужно, чтобы все защитники, ГДЕ их type1_id или type2_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

Смежные вопросы