gpt4 book ai didi

php - Laravel 将 "wherenotin"与 "like"运算符链接到 "orWhere"

转载 作者:行者123 更新时间:2023-11-30 21:40:46 25 4
gpt4 key购买 nike

我正在尝试获取 allParticipants 数组中不存在但他们的姓名、电子邮件或用户名与 input 匹配的用户列表。下面是我试过的

User::where('username', $input)
->orWhere('email', $input)
->orWhere('name', 'LIKE', '%' . $input . '%')
->whereNotIn('id', $allParticipants)->get()->toJson()->get();

然而,上面返回的是用户名与输入匹配的用户列表,无论它们是否存在于 allParticipants 数组中。编写此查询的正确方法是什么。

最佳答案

检查您的查询:

你告诉 Laravel 获取[A] 不属于特定参与者组的用户列表 [B] 具有特定 emailOR [C] 具有特定 name 的.. 所以翻译成这样:

[A] OR [B] OR [C]

这就是为什么当 Laravel 找到与提供的匹配的 user 电子邮件时,它会返回它,而不管它是否在该特定组($appParticipants)中.

解决方案

要获得您想要的行为,您应该这样做:

User::where('username', $input)
->whereNotIn('id', $allParticipants)
->where(function ($query) use ($input) {
$query
->where('email', $input)
->orWhere('name', 'LIKE', '%' . $input . '%');
})
->get()
->toJson()
->get();

这会执行以下操作:

[A] 检查 ID 不在 $allParticipants 数组中的用户 AND 遵循下一个规则:[B ] 有一个特定的 email[C] 一个特定的 name

[A] AND ([B] OR [C])

关于php - Laravel 将 "wherenotin"与 "like"运算符链接到 "orWhere",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51735744/

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