2017-08-25 12 views
1

このSQLのようなLaravel 5 Eloquentクエリを書くにはどうすればよいですか?私はすでにあなたがこのためにモデルを使用することができますwhere句に "and"と "or"を付けたLaravel join

->where('users.is_active', '!=', 2) 
    ->where('users.name', 'like' , '%'. $search .'%') 
    ->orWhere('users.lname', 'like' , '%'. $search .'%') 
    ->orWhere('users.email', 'like' , '%'. $search .'%') ->get(); 

答えて

0

高度なLaravel Documentation

で句に参加 を見てみましょう

は私が質問を誤解だと思うEDIT

合流します。ネストされたのwheresを行うには、次のことを行うことができます。

\DB::table('table1')->...->where(function($query) { 
    $query->where('table1.fname', 'like', '%xxxxx$')->orWhere('table1.lname', 'like', '%xxxx%); 
})->where('table1.is_active', '!=', 0); 
+0

は私のクエリです:$メンバー= DB ::テーブル( 'ユーザー') - >は( 'users.id' を選択し、」 「users.name」、「users.lname」、「users.email」、「users.phone」、「users.address_1」、「users.address_2」、「users.city」、「users.postcode」、 'countries.photo'、 'users.created_at'、 'countries.name as country') - > join( 'countries'、 'users.country'、 '='、 'countries.id') - ( 'users.is_active'、 '!='、2) - >ここで( 'users.name'、 'like'、 '%'。$ search。 '%') - > orWhere( 'users。 '%'など)$- > orWhere( 'users.email'、 'like' 、 '%' $ search。 '%') - > get(); – saiful

+0

私はis_active = 2を持っているユーザーを望んでいません – saiful

+0

私は質問を誤解したと思います。私は解決策を持って、私に秒を与えます – Desh901

0

を試してみました

where ((table1.fname like %xxxxx%) 
    OR (table1.lname like %xxxxx%)) 
    AND table1.is_active != 0 

TableModel::where('fname', 'like', '%xxxxx%') 
      ->orWhere('lname', 'like', '%xxxxx%') 
      ->where('is_active', '!=', 0) 
      ->get(); 
0
$data = DB::table('table1')->where('fname', 'like', '%xxxxx%') 
     ->orWhere('lname', 'like', '%xxxxx%') 
     ->where('is_active', '!=', 0) 
     ->get(); 
//add use DB; in your controller 
+0

ここに私のクエリです:$ members = DB :: table( 'users') - > select( 'users.id'、 'users.name'、 'users.lname'、 'users.email'、 'users.phone '、' users.address_1 '、' users.address_2 '、' users.city '、' users.postcode '、' users.unit '、' users.photo '、' users.created_at '、' countries.name ' '); - > join(' countries '、' users.country '、' = '、' countries.id ') - >ここで(' users.is_active '、'!= '、2) - > '%'); $検索。 '%') - > orWhere( 'users.name'、 'like'、 '%' "%user"、 "like"、 "%"。$ search。 '%') - > get(); orWhere( 'users.email'、 'like'、 '%' – saiful

+0

is_active = 2のユーザーがいないようにしてください。 – saiful

+0

私は次のようにしたいと思います:where((table1.fname like%xxxxx%)OR(table1.lname%xxxxx%))AND(table1.is_active!= 0) – saiful

0

が全体として評価する必要がグループ化されたサブ句を持っているために、あなたはwhere()クロージャを渡すことができます。そして、あなたはis_active列のチェックのための第二where呼び出したい:ここ

$value = '%xxxxx%'; 

$collection = Model::where(function ($models) use ($value) { 
    $models->where('fname', 'like', $value) 
      ->orWhere('lname', 'like', $value); 
}) 
    ->where('is_active', '!=', 0) 
    ->get();