首页 > 解决方案 > 在 laravel 中使用多个 where 更新查询中的数据

问题描述

我有一个像这样的二维数组输入:

[ 6 => [ [2=>3, 5=>7] ],
  8 => [ [1=>4, 9=>3] ],
  .....
]

6,8 是 locationID,2,5,1,9 是 variantID,3,4,7,3 是它们各自的数量。我必须遍历二维数组并获取数据。该表具有字段 location_id、variant_id 和数量。

    $variantsData  = self::where(function ($query) use ($inventoryData) {
        foreach ($inventoryData as $location => $variantData) {
            foreach ($variantData as $variant => $quantity) {
                $query->orWhere(function ($query) use ($location, $variant) {
                    $query->where('location_id', $location)
                        ->where('variant_id', $variant);
                });
            }
        }
    })->get();

$inventoryData 是二维数组。我得到了这段代码中所需的数据,但现在我需要通过在数组中添加存储的数量来更新数量。

标签: phplaravelwhere-clausequery-builder

解决方案


如果我理解正确,您想在哪里执行查询location_id = $locationvariant_id = $variant更正?如果是这样,您可以在一个 where 子句中传递一个嵌套数组,而不是使用多个 where 子句。

IE

$query->where([
    ['location_id', $location],
    ['variant_id', $variant]
]);

参考:https ://laravel.com/docs/5.8/queries#where-clauses


推荐阅读