gpt4 book ai didi

laravel - 嵌套在一个地方 - Laravel

转载 作者:行者123 更新时间:2023-12-04 15:33:32 25 4
gpt4 key购买 nike

我需要在 Laravel 6 中构建一个查询,该查询嵌套了 where's in one where 查询。例如:Select * FROM example where k=5 and ((i=1 and j=2) or (i=3 and j=4) or (i=5 and j=4)......)

我尝试了下面的代码

                $getItems = $getItems->where(function ($query) use($codes,$cID) {
$query->orWhere(function ($query1) use ($codes, $cID) {
foreach($codes[$cID] as $code) {
$query1
->where('code', $code)
->where('cid', $cID);
}
});
});

但是结果是错误的。

and (("code" = ? and "cid" = ?)) and (("code" = ? and "cid" = ?)) and (("code" = ? and "cid" = ?))....

我不明白为什么它在每个 foreach 循环中添加 2 个括号以及为什么它添加“and”而不是“or”。关于如何构建它有什么建议吗?

最佳答案

你应该有这样的结构:

Model::where('k', 5)->where(function($q){
$q->orWhere(function($q){
$q->where('i', 1)->where('j', 2);
})->orWhere(function($q){
$q->where('i', 3)->where('j', 4);
})->orWhere(function($q){
$q->where('i', 5)->where('j', 4);
});
})->toSql();

> select * from `table` where `k` = ? and ((`i` = ? and `j` = ?) or (`i` = ? and `j` = ?) or (`i` = ? and `j` = ?))

所以你的查询应该是:

$getItems->where('k', 5)
->where(function ($query) use($codes, $cID) {
foreach($codes[$cID] as $code) {
$query->orWhere(function ($query1) use ($code, $cID) {
$query1->where('code', $code)->where('cid', $cID);
});
}
});

关于laravel - 嵌套在一个地方 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60559442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com