2017-09-13 13 views
0

通常の検索クエリを作成しましたが、正常に動作していますが、私は プロジェクトで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'"; 

IAは、ユーザタイプVARUNよう、以下のクエリで検索する概念を統合することはできません、それは、列のすべてから検索し、唯一その結果得られますすべての列: - 私は、出力の下になった上記laravelクエリをruningて後

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

をし、今私はする必要があります3210はそれで一部を検索適用; -

.............................................................................. 
id  email   u_firstname  u_lastname  roles  status 
.......................................................................... 
    1 [email protected]  a    b   seller   Active 
    2 [email protected]  c    d   Buyer   Inactive 
+0

の代わりにカスタム検索エンジンを使用します。DB :: raw –

+0

はい、これ以降は私ですこのようなlaravelのinbuiltページネーションを使用することはできません$ post = DB :: select(DB :: raw($ query)) - > pagination(5);それは私にエラーを与える、私はlaravelのページネーションを使用する通常のクエリを変換したい。 –

+0

エラーが表示される場合は何も意味がありません。 –

答えて

0

あなたはページネータを自分で作成することができ、この

$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

上記のクエリでエラーが表示されています。 - 解析エラー:構文エラー、予期しない '$ query'(T_VARIABLE)。 –

+0

最後に ';'を追加するのを忘れました – C2486

+0

どのようなエラーとどの行ですか? '' 3 ''、' $ query-> where(' t.u_status '、'!= '、 "3");' – C2486

関連する問題