gpt4 book ai didi

php - Laravel where 子句,以及 or 列表

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

我想创建一个由 and 组成的 where 子句,并带有 or 列表。这是我的代码:

$searchLoop = array(
'u.Name',
'u.Email',
'n.Name',
'u.PhoneMobile'
);
$text = 'Manager';
$count = 0;
foreach ($searchLoop as $loop) {
$query->where(function ($where) use ($loop, $count, $text) {
if ($count === 0) {
$where->where($loop, 'like', '%' . $text . '%');
} else {
$where->orWhere($loop, 'like', '%' . $text . '%');
}
});
$count++;
}

根据我对 laravel 文档的阅读和其他一些搜索,我希望这会像这样翻译:

and  (
`u`.`Name` like '%Manager%'
or `u`.`Email` like '%Manager%'
or `n`.`Name` like '%Manager%'
or `u`.`PhoneMobile` like '%Manager%'
)

相反,它会翻译成这样:

and (`u`.`Name` like '%Manager%')
and (`u`.`Email` like '%Manager%')
and (`n`.`Name` like '%Manager%')
and (`u`.`PhoneMobile` like '%Manager%')

此外,我如何使用 $query->where 函数中的 $where->where 似乎并不重要(无论我是否只为每个循环执行 orWhere 等),它仍然只显示和的。

感谢您提前提供的帮助。

最佳答案

感谢所有提供帮助的人。我终于能够弄清楚这一点,将 foreach 放在查询函数中解决了问题

$query - > where(function($where) use($searchLoop, $text) {
foreach($searchLoop as $count => $loop) {
if ($count === 0) {
$where - > where($loop, 'like', '%'.$text.
'%');
} else {
$where - > orWhere($loop, 'like', '%'.$text.
'%');
}
}
});

关于php - Laravel where 子句,以及 or 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42841109/

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