我在进行一些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
角色的用户。例如,我有一个Admin
namedJohn
和Owner
named Jane
,它们都有相同的地址,例如New York
。当用户New York
在搜索框中输入内容时,上面的查询应仅返回John
。但是,就我而言,它也返回Jane
。
我该如何查询?
我希望你能理解我的问题。谢谢。
您可以在以下功能中使用where查询。
$data = DB::table('users')
->join('outlets','users.outlet_id','outlets.outlet_id')
->where('users.role','Admin')
->where(function($q) use ($query) {
$q->where('users.nama','like','%'.$query.'%');
$q->orWhere('users.username','like','%'.$query.'%');
$q->orWhere('outlets.nama_outlet','like','%'.$query.'%');
$q->orWhere('users.address','like','%'.$query.'%');
})->orderBy('users.user_id')
->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句