Mysql 类似laravel的查询不起作用?
这是我的代码:Mysql 类似laravel的查询不起作用?,mysql,laravel,Mysql,Laravel,这是我的代码: $lists = DB::table('connection_request as cr') ->leftJoin('users as u', function($join) { $join->on('u.id', '=', 'cr.sender_id')->orOn('u.id','=', 'cr.receive
$lists = DB::table('connection_request as cr')
->leftJoin('users as u', function($join)
{
$join->on('u.id', '=', 'cr.sender_id')->orOn('u.id','=', 'cr.receiver_id');
})
->select('cr.id as connection_id','cr.sender_id as sen_id','cr.receiver_id as rec_id','cr.approve_status','u.id','u.user_type','u.user_type_id',DB::raw("IF(u.avatar = '', 'uploads/avatar/default.jpg', u.avatar) as avatar"),'u.name','u.email')
->where(function($query) use ($user_id)
{
if(!empty($user_id)):
$query->Where('cr.receiver_id','=', $user_id);
endif;
if(!empty($user_id)):
$query->orWhere('cr.sender_id','=', $user_id);
endif;
})
->where(function($query) use ($searchValue)
{
if(!empty($searchValue)):
$query->Where('u.name','like', '%' . $searchValue . '%');
$query->orWhere('u.email','like', '%' . $searchValue . '%');
endif;
})
->where('cr.approve_status','=',1)
->where('u.id','!=',$user_id)
->get();
它提供了如下mysql查询
select `cr`.`id` as `connection_id`, `cr`.`sender_id` as `sen_id`, `cr`.`receiver_id` as `rec_id`, `cr`.`approve_status`, `u`.`id`, `u`.`user_type`, `u`.`user_type_id`, IF(u.avatar = '', 'uploads/avatar/default.jpg', u.avatar) as avatar, `u`.`name`, `u`.`email` from `connection_request` as `cr` left join `users` as `u` on `u`.`id` = `cr`.`sender_id` or `u`.`id` = `cr`.`receiver_id` where (`cr`.`receiver_id` = 10 or `cr`.`sender_id` = 10) and (`u`.`name` LIKE 'pri' or `u`.`email` LIKE 'pri') and `cr`.`approve_status` = 1 and `u`.`id` != 10
所以,我无法得到结果,因为在like之后,它应该有%
符号,但生成的laravel查询没有百分比符号
我下面的原始查询工作正常
select `cr`.`id` as `connection_id`, `cr`.`sender_id` as `sen_id`, `cr`.`receiver_id` as `rec_id`, `cr`.`approve_status`, `u`.`id`, `u`.`user_type`, `u`.`user_type_id`, IF(u.avatar = '', 'uploads/avatar/default.jpg', u.avatar) as avatar, `u`.`name`, `u`.`email` from `connection_request` as `cr` left join `users` as `u` on `u`.`id` = `cr`.`sender_id` or `u`.`id` = `cr`.`receiver_id` where (`cr`.`receiver_id` = 10 or `cr`.`sender_id` = 10) and (`u`.`name` LIKE '%pri%' or `u`.`email` LIKE '%pri%') and `cr`.`approve_status` = 1 and `u`.`id` != 10
请检查并帮助我,伙计们
谢谢您的where状态也可以是这样。。 它会起作用的
->where(function($query) use ($searchValue)
{
if(!empty($searchValue)):
$query->Where('u.name','like', DB::raw("'%$searchValue%'"));
$query->orWhere('u.email','like', DB::raw("'%$searchValue%'"));
endif;
})
您的where条件也可以是这样的。。 它会起作用的
->where(function($query) use ($searchValue)
{
if(!empty($searchValue)):
$query->Where('u.name','like', DB::raw("'%$searchValue%'"));
$query->orWhere('u.email','like', DB::raw("'%$searchValue%'"));
endif;
})
就我个人而言,我使用它,而且效果相当好
$query->where('u.name','LIKE', "%{$searchValue}%")->get();
就我个人而言,我使用它,而且效果相当好
$query->where('u.name','LIKE', "%{$searchValue}%")->get();
哪里!=可能在哪里?您使用的是什么版本的Laravel?@Jerodev Laravel version 5.6Where!=可能在哪里?你使用的是什么版本的Laravel?@Jerodev Laravel 5.6版