【问题标题】:Laravel where through each collection itemLaravel where 通过每个集合项
【发布时间】:2017-02-05 10:21:30
【问题描述】:

我有以下查询,它会返回最多 10 个项目的列表:

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

此查询返回 TypeEffects 的集合。每个 typeeffects 中都有 type_id 列。

我的数据库中有 Defender 对象,它有 type1_idtype2_id 列。

主要目标

我需要获取所有防御者,WHERE 他们的type1_idtype2_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 查询中找到的所有防御者收集一个集合吗?

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    您可以使用方法whereIn,它将查找您传递给它的数组中的所有项目。

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

    $type1Counters 将是一个包含所有可能type_ids 的数组。 现在您可以获取所有上述类型的 Defender:

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

    【讨论】:

    • 谢谢!假设我在 $type1Countesr 数组中有一个类型数组,最后我想返回该数组中的所有这些类型以及其中的所有数据(所有 TypeEffects,不仅仅是 ID 采摘)。如果没有勇气,我怎么能做到这一点而不进行另一个相同的查询?
    猜你喜欢
    • 2019-02-09
    • 2017-11-02
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    相关资源
    最近更新 更多