我想检索与搜索字符串匹配的数据,但必须不属于当前用户。
if($str_search && $str_search != '' )
{
$mandate_list = Mandate::select(array('umrn','mandate_status', 'payment_type','currency','fixed_amount','max_amount','user_id','id','debtor_bank','creditor_bank','refusal_reason'))
->orWhere('id', 'LIKE', '%'.$str_search.'%')
->orWhere('umrn','LIKE','%'.$str_search.'%')
->orWhere('mandate_status','LIKE','%'.$str_search.'%')
->orWhere('mandate_date','LIKE','%'.$str_search.'%')
->orWhere('payment_type','LIKE','%'.$str_search.'%')
->orWhere('currency','LIKE','%'.$str_search.'%')
->orWhere('fixed_amount','LIKE','%'.$str_search.'%')
->orWhere('mandate_date','LIKE','%'.$str_search.'%')
->where('user_id', '<>', $current_user)
->orderBy('updated_at', 'desc')
->get();
}
但是此查询显示所有记录(甚至属于当前用户)。我该如何解决。感谢您的建议。
将所有orWhere
s分组为一个闭包:
Mandate::select([.....])->where(function($query) use ($str_search)
{
$columns = ['id', 'umrn', 'mandate_status', ...];
foreach ($columns as $column)
{
$query->orWhere($column, 'LIKE', '%'.$str_search.'%');
}
})
->where('user_id', '<>', $current_user)
->orderBy('updated_at', 'desc')
->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句