【发布时间】:2018-02-21 19:14:21
【问题描述】:
我写了一个普通的搜索查询,它工作正常,但我有 在我的项目中实现 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'";
我想以这种形式转换我的查询我已经获取了我必须应用搜索的所有结果,但我没有得到如何应用搜索的所有列 ia 无法将搜索概念集成到下面的查询中,如用户键入 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
【问题讨论】:
-
只使用 DB::raw
-
是的,但在此之后我无法像这样使用 laravel 的内置分页 $post = DB::select(DB::raw($query))->pagination(5);它给了我错误,我想将普通查询转换为使用 laravel 的分页。
-
给我错误意味着什么都没有,你能解释一下你得到了什么错误吗?
-
我还为此发布了一个问题,您可以验证我如何使用普通查询进行分页stackoverflow.com/questions/46117885/…