laravel like query is not working?

依然范特西╮ 提交于 2021-02-10 14:21:13

问题


This is my code :

 $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();

and it provide mysql query like this

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

So, I can't able to get result because after like it should have % symbol but, generate laravel query not having percentage symbol

my below raw query is working perfect

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

Please check and help me guys,

Thanks


回答1:


Personally, I use that and it works rather well ...

$query->where('u.name','LIKE', "%{$searchValue}%")->get();



回答2:


Your where condition can also be like this .. It will work..

->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;
                    })


来源:https://stackoverflow.com/questions/44408610/laravel-like-query-is-not-working

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!