Laravel MySQL查询的一个查询中包含“ AND”和“ OR”

达尼·法德利(Dani Fadli)

我在进行一些SELECT查询以进行“搜索”方法时遇到问题这是我的表结构table 'users': name | varchar, username | varchar, role | enum[Admin, Owner, Cashier], address | text

我制作了一个ajax脚本,该脚本将一个称为的参数发送queryLaravel Controllerquery参数包含用户在我的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我的问题的关键是上面的查询还会返回具有OwnerCashier角色的用户例如,我有一个AdminnamedJohnOwnernamed Jane,它们都有相同的地址,例如New York当用户New York在搜索框中输入内容时,上面的查询应仅返回John但是,就我而言,它也返回Jane

我该如何查询?

我希望你能理解我的问题。谢谢。

双唇h

您可以在以下功能中使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel - 在一个查询中删除和保存

Laravel join 和 left join 在一个查询中

Laravel雄辩地在一个查询中的位置和/或之间

如何在 Laravel 中的一个查询语句中加入 Eloquent 和 Query Builder

我如何在 laravel 中的一个查询中进行 orderby 和 groupby

Laravel Eloquent Where、orWhere 和 Find 在同一个 eloquent 查询中的问题

Laravel 查询以使用另一个表和输入从表中获取数据

如何使用python在一个弹性搜索查询中包含范围和匹配查询?

Laravel在一个查询中指定where()和find()是不好的做法吗?

laravel中的查询和子查询联接

MySql 从查询中获取第一个和最后一个结果

Laravel下一个/上一个具有条件和循环的查询

需要在 Laravel 中的查询函数中包含一个变量

Mysql查询获取内部连接查询中第一个和最后一个事务之间的天数

LINQ:“包含”和一个Lambda查询

在laravel中查询时创建一个包含子元素的数组

Laravel标签与和查询

在同一个 Mysql 查询中的 MySql GROUP BY 和 SUM() 中

如何在mysql和laravel中查询json对象数组

在MySQL中的一个查询中选择和计数较大的值和较小的值

在MySQL和PHP中的一个mysql_num_rows中进行多数组查询

在laravel 5和mysql中获取groupby对象的第一个和最后一个值

mysql update json属性和一个查询中的另一列

COUNT 和 SELECT 到 mySQL 中的同一个查询中

Mysql:在一个查询中选择计数和 IN 子句

在一个查询MYSQL中进行INSERT和UPDATE

如何在一个Laravel 5 SQL查询中使用COUNT,GROUP BY和DATE_FORMAT?

在 Laravel 5.7 和 PostgreSQL 中查询

条件查询和分页在Laravel 7中