2017-10-31 6 views
0

私は2つのクエリを持っています。 interviewが1に等しい場合と、interviewが2の場合のすべてを返します。次に、両方を上に追加します。現在、私のdbには、インタビューが2である2つのケースと、インタビューが1である1つのケースがあります。しかし、何らかの理由でそれらを組み合わせようとすると、私は4になる。どのように組み合わせて正しい番号を得るか。私が使用して、その後結合しようとしたときにここで 2つの朗らかな雄弁なクエリを組み合わせる

は3

Scan::where('user_id', $client->id)->where('interview', '2')->count(); 
Scan::where('user_id', $client->id)->where('interview', '1')->count(); 

まで追加の二つの文であり、orwhere文では、それは私が間違っているのは何4

Scan::where('user_id', $client->id)->where('interview', '2')->orwhere('interview', '1')->count(); 

返し、私をどのように行います修理する。

答えて

3

問題がANDORです:

最初の1厳密に戻ります。これは、外観はあるに基づく平均user_id 2つ目はuser_idのように見えるながらinterview、AND interview = 1 OR interview = 2

を使用して結果クエリがより多くのレコードと一致するため、より多くの結果が得られます。interview = 2user_idなし

しかし、あなたはそれがあり、このためwhereIn機能を使用することができます。

Scan::where('user_id', $client->id) 
    ->whereIn('interview', ['2', '1']) 
    ->count(); 

それはあなたが2または1

どちらかとinterview値を持つ結果を返します。