【发布时间】:2020-03-21 22:31:29
【问题描述】:
我在执行一些 SELECT 查询以创建“搜索”方法时遇到问题。
这是我的表结构
table 'users':
name | varchar,
username | varchar,
role | enum[Admin, Owner, Cashier],
address | text
我制作了一个 ajax 脚本,它将一个名为query 的参数发送到我的Laravel Controller。此query 参数包含来自用户在我的admin.blade.php 页面中搜索某些数据的输入,该页面仅显示用户表中具有Admin 角色的用户。这是我的查询:
$data = DB::table('users')
->join('outlets','users.outlet_id','outlets.outlet_id')
->where('users.role','Admin')
->where('users.nama','like','%'.$query.'%')
->where('users.username','like','%'.$query.'%')
->orWhere('outlets.nama_outlet','like','%'.$query.'%')
->orWhere('users.address','like','%'.$query.'%')
->orderBy('users.user_id')
->get();
您不必关注join。我的问题的重点是上面的查询还返回具有Owner 和Cashier 角色的用户。例如,我有一个名为John 的Admin 和一个名为Owner 的Jane,它们的地址相同,例如New York。当用户在搜索框中输入New York 时,上面的查询应该只返回John。但是,就我而言,它也返回Jane。
我该如何进行查询?
希望你能理解我的问题。谢谢。
【问题讨论】:
-
这能回答你的问题吗? Nested 'AND OR' Query in Eloquent
-
是的,确实如此。非常感谢@El_Vanja 的帮助,对不起我的无知。