2017-03-20 19 views
0

"Licencies"structure_idからの結果を返すクエリを、4とは別のものにしました。すべてがwhere節でうまくいくのですが、別の条件がorWhereにあった場合は、別のものから結果が表示されますstructure_ids ...誰にでも正しい構造IDと2つのwhere節を持つ正しいクエリを知っていますか?おかげで事前にたくさん雄弁な質問で間違ったIDを取得する

ここ

私のクエリ:

ここ
$licencies = Licencies::where('structure_id' , '4')->where('statut_licence_id' , '2')->orWhere('valid_licence_id' , '1')->get(); 

私はコード実行の問合せ:

select * from `licencies` where `structure_id` = '4' and `statut_licence_id` = '2' or `valid_licence_id` = '1' 

をが、結果には私もexempleためstructure_id = 5からlicencies取得

答えて

2

あなたがstructure_id 4を持つすべてのレコードを取得したい場合は、しかしstatut_licence_idと「2」またはvalid_licence_id 1、これを試してみてください。

$licencies = Licencies::where('structure_id' , '4') 
->where(function($query) { 
    $query->where('statut_licence_id' , '2') 
      ->orWhere('valid_licence_id' , '1') 
})->get(); 

ここにリンクしてグループ化パラメータを見てみましょう:https://laravel.com/docs/master/queries#where-clauses

+0

これは現在動作しています!本当にありがとう !! –

0

これを試してください:(btwには3つの異なるIDがあります。構造体ID、statut_licence_id、valid_licence_id)あなたのクエリが正しいと思われるので、ロジックが正しいことを確認してください。

$licencies = Licencies::where(['structure_id' => '4','statut_licence_id' => '2'])->orWhere('valid_licence_id' => '1')->get(); 

structure_id = 5からlicenciesを持っているために、そのロジック、valid_licence_id場合(あなたのORステートメントで一致します)その1は、その後5にならない理由structure_idため?

+0

ご返信ありがとうございます!それはorhere節まで正確なクエリが動作していません。次にorhere節を置くと、他のすべてのライセンスが他のstructure_idから取得されます –

+0

はい、あなたの文で 'valid_licence_id'をチェックするだけでよいので、' structure_id'は何でも構いません。 – Onix