2017-08-08 14 views
0
$input = Input::all(); 

$state_name = (empty($input['state_name'])?'':$input['state_name']); 
$score = (empty($input['score'])?'':$input['score']); 

$GetUsersList = User::CheckForActive(); 

if($state_name!='') 
    $GetUsersList->where('state_name'.$state_name); 

if($score!='') 
    $GetUsersList->where('score'.'<'.$score) 
        ->orderBy('id', 'desc') 
        ->get(); 

でこんにちは、条件雄弁

以上がUserControllerの私のコードです基づいて、私は条件に基づいてuser tableのレコードを取得したいです。しかし毎回何も返さない。もし私がifの条件を取り除くと、うまく動作します。しかし、私の場合、その必要はありません毎回state_namescoreが渡されます。だからこそ私はifの条件を付けました。

+0

where句に入力ミスや間違いがありますか。 –

+0

リクエストの正当性をテストするためにSQLでリクエストしてみましたか? –

答えて

1

あなたがもし第二の条件内orderBy->get()を持っているので、あなたは結果を取得します。

ご理解ください。

2

where()メソッドの構文が間違っています。チェーン文字列ではなくカンマを使用します。

->where('state_name', $state_name);

->where('score', '<', $score);

+0

ええ、あなたは正しいです。しかし、私の問題はまだ解決されていません。 – Komal

0

私はあなたがこれを試すことができると思います。

if($state_name!='') 
    $GetUsersList->where('state_name',$state_name); 

if($score!='') 
    $GetUsersList->where('score'.'<'.$score) 
        ->orderBy('id', 'desc') 
        ->get(); 

OR

if($state_name!='') 
    $GetUsersList->where('state_name',$state_name) 
        ->orderBy('id', 'desc') 
        ->get(); 

if($score!='') 
    $GetUsersList->where('score'.'<'.$score) 
        ->orderBy('id', 'desc') 
        ->get(); 

希望あなたのためにこの作品!! $score!=''は今

$GetUsersList = User::CheckForActive(); 

if($state_name!=''){ 
    $GetUsersList->where('state_name', $state_name); 
} 

if($score!=''){ 
    $GetUsersList->where('score', '<', $score); 
} 

$users = $GetUsersList->orderBy('id','desc')->get(); 

のようにコードを変更する、あなたはそれに応じて結果を取得しますがある場合にのみ

+0

動作しません。それでも何も返さない。 – Komal