按2个值进行Laravel搜索



我的Laravel应用程序有一些问题。我试图做一个查询,将得到所有的结果从一个模型,在我有关系,将需要使一个查询依赖于2个值,这些值可以是一个数组。为了澄清这个问题,让我们看一些代码。

我有一个对象,看起来像:

[{
"id": "24b16d30-884a-4b3d-b535-77af540b5f5c",
"product_id": "69292b28-773c-4223-b480-d39020602b52",
"qty": 4,
},
{
"id": "622bc183-1243-4104-98e6-1820949305fb",
"product_id": "10c19e8d-89b3-480f-a83b-7185cc7ba0fe",
"qty": 2,
},
{
"id": "c7f03f06-01d1-4cd0-bafb-03308feb8644",
"product_id": "7765a4c7-37b1-4591-bbcb-095aa06a3455",
"qty": 451,

}]

所以这个对象是用来查询的,我需要检查哪里查询有这个product_id和qty大于这个值。

到目前为止,我成功地通过product_id进行查询,但我不知道如何检查库存数量。它看起来像这样

$findFF = Fulfillments::with(['stock' => function ($q) use ($get_products){
$q_products = [];
$q_stock = [];
foreach ($get_products as $key => $product){
array_push($q_products, $product['product_id']);
array_push($q_stock, $product['qty']);
}
$q->whereIn('product_id', $q_products);
}])->get();

请记住,$get_products实际上是我解释的第一个对象。

这可能不是最好的方式来做这个查询,我可以拔他们,但我不能拔两个值。我只是想确认一下这个产品的数量是否大于给定的价值。它应该是这样的:

$q->whereIn('stock_qty', $q_stock);

$q->whereIn('product_id', $q_products)->whereIn('stock_qty', $q_stock);

但是它不依赖于product_id,所以它不会正确。

有什么建议吗?

要获得与数组匹配的条目,只需选择与两个条件匹配的stock,如下所示:

Fulfillments::whereHas('stocks', function ($q) use ($get_products){
foreach ($get_products as $product){
$q->orWhere( function($q) use ($product) {
$q->where('product_id', '=', $product['product_id'])
->where('qty', '>', $product['qty']);
});
}
}])->get();

最新更新