Sql Laravel-忽略条件的情况
我使用的是Sql Laravel-忽略条件的情况,sql,laravel,Sql,Laravel,我使用的是Laravel 5.2 我构建了一个查询来检索一些订单。 查询最多可以使用三个筛选器 订单类型 订单状态 关键字(用户输入) 情况 如果用户过滤订单类型和/或订单状态,则工作正常 问题 如果一个过滤器只获取发送的订单,但输入Anna,它将获得类型B订单,这是错误的,因为它是正在进行中 问题 我知道这是由于添加了where和或where引起的,但我找不到解决方案 数据 查询 您应该将闭包传递给或where,以便能够将语句分组到括号中。大概是这样的: $orderLines->whe
Laravel 5.2
我构建了一个查询来检索一些订单。
查询最多可以使用三个筛选器
订单类型
和/或订单状态
,则工作正常
问题
如果一个过滤器只获取发送的
订单,但输入Anna
,它将获得类型B
订单,这是错误的,因为它是正在进行中
问题
我知道这是由于添加了where
和或where
引起的,但我找不到解决方案
数据
查询
您应该将闭包传递给
或where
,以便能够将语句分组到括号中。大概是这样的:
$orderLines->where('order_line_items.last_activity','like', '%'.request('keyword') .'%')
->orWhere(function ($query) {
$query->orWhere('users.first_name','like', '%'.request('keyword') .'%')
->orWhere('users.last_name','like', '%'.request('keyword') .'%')
->orWhere('users.username','like', '%'.request('keyword')
})
阅读文档中的更多内容<代码>参数分组部分。您是否可以检查sql日志,可能是您正在获取查询或条件
username=anna或order status=sent
根据这一点,结果很好,查询应该连接到并且
它没有解决问题
if (request()->has('keyword')) {
$orderLines->where(function ($query) {
$query->orWhere('order_line_items.last_activity','like', '%'.request('keyword') .'%')
->orWhere('users.first_name','like', '%'.request('keyword') .'%')
->orWhere('users.last_name','like', '%'.request('keyword') .'%')
->orWhere('users.username','like', '%'.request('keyword') .'%')
}
}
$orderLines->where('order_line_items.last_activity','like', '%'.request('keyword') .'%')
->orWhere(function ($query) {
$query->orWhere('users.first_name','like', '%'.request('keyword') .'%')
->orWhere('users.last_name','like', '%'.request('keyword') .'%')
->orWhere('users.username','like', '%'.request('keyword')
})
if (request()->has('keyword')) {
$orderLines->where(function ($query) {
$query->orWhere('order_line_items.last_activity','like', '%'.request('keyword') .'%')
->orWhere('users.first_name','like', '%'.request('keyword') .'%')
->orWhere('users.last_name','like', '%'.request('keyword') .'%')
->orWhere('users.username','like', '%'.request('keyword') .'%')
}
}