我有以下查询,它会重新列出最多10个项目的列表:
$type1Counters = TypeEffects::where('defence',$defender->type1_id)
->where("modifier",'>',1)
->get();
此查询返回TypeEffects的集合。每个类型效果都包含type_id
列。
我的数据库中有Defender对象,其中包含type1_id
和type2_id
列。
主要目标
我需要让所有防御者, WHERE 他们的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
查询中找到的所有类型的防御者获取一个集合?
答案 0 :(得分: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();