Как преобразовать обычный поисковый запрос в конструктор запросов laravel

Я написал нормальный поисковый запрос, и он работает нормально, но у меня есть
чтобы реализовать разбиение на страницы Laravel в моем проекте, но разбиение на страницы Laravel не работает с обычным запросом, поэтому я хочу преобразовать свой поисковый запрос в запрос Laravel, используя построитель запросов.

Мой обычный поисковый запрос: —

 $query="SELECT t.* FROM (SELECT users.`id`,users.`email`,users.`u_firstname`,users.`u_lastname`,users.`u_dob`,users.`u_mobile`,user_roles.`ur_role_id`,UCASE(master_roles.`role_name`) as roles,case users.`u_status` when '0' then 'Inactive' when '1' then 'Active' when '4' then 'Deactivate' end as status,users.`u_status` FROM `users` inner join user_roles on user_roles.`ur_user_id`=users.`id` inner join master_roles on user_roles.`ur_role_id`=master_roles.`role_id`) t WHERE (t.status LIKE '$search%' or t.u_firstname like '$search%' or t.u_lastname like '$search%' or t.email like '$search%' or t.u_mobile like '$search%' or t.u_dob like '$search%' or t.roles like '$search%') and t.id!='$id' and t.u_status!='3'";

Я хочу преобразовать свой запрос в эту форму. Я получил все результаты, к которым мне нужно применить поиск, но я не понимаю, как применить поиск по всем столбцам. Я не могу интегрировать концепцию поиска в приведенный ниже запрос, например, пользовательский тип varun. он будет выполнять поиск по всему столбцу и даст только такой результат:

   $post = DB::table('users')
->join('user_roles','users.id','=','user_roles.ur_user_id')
->join('master_roles','user_roles.ur_role_id','=','master_roles.role_id')
->select('users.id','users.email','users.u_firstname','users.u_lastname','users.u_dob','users.u_mobile','user_roles.ur_role_id','master_roles.role_name as roles',DB::raw('(CASE WHEN users.u_status ="0"  THEN "Inactive"  when "1" then "Active" END) AS status'))
->where('users.id','!=',$id)
->get();

после выполнения вышеуказанного запроса laravel я получил вывод ниже, и теперь я должен
прикладная поисковая часть в нем; —

..............................................................................
id     email          u_firstname     u_lastname     roles      status
..........................................................................
1   a@gmail.com        a              b          seller         Active
2   b@gmail.com        c              d          Buyer          Inactive

0

Решение

Вы можете создать Paginator самостоятельно — проверьте руководство по нумерации страниц

Также я бы предложил использовать полнотекстовый поиск или даже лучше пользовательский поисковик вместо LIKE = '%text%'

0

Другие решения

Ты можешь использовать orWhere как это

$query = DB::table('users')
->join('user_roles','users.id','=','user_roles.ur_user_id')
->join('master_roles','user_roles.ur_role_id','=','master_roles.role_id');
$query->where(function($query)use($search){
$query->orwhere('t.status','LIKE','%'.trim($search).'%');
$query->orwhere('t.u_firstname','LIKE','%'.trim($search).'%');
$query->orwhere('t.u_lastname','LIKE','%'.trim($search).'%');
$query->orwhere('t.email','LIKE','%'.trim($search).'%');
$query->orwhere('t.u_mobile','LIKE','%'.trim($search).'%');
$query->orwhere('t.u_dob','LIKE','%'.trim($search).'%');
$query->orwhere('t.roles','LIKE','%'.trim($search).'%');
});

$query->select('users.id','users.email','users.u_firstname','users.u_lastname','users.u_dob','users.u_mobile','user_roles.ur_role_id','master_roles.role_name as roles',DB::raw('(CASE WHEN users.u_status ="0"  THEN "Inactive"  when "1" then "Active" END) AS status'));
$query->where('users.id','!=',$id);
$query->where('t.u_status','!=',3);
$post = $query->get();
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector