2017-09-26 2 views
2

は例えば、私は、テーブルを持っているLaravelの2つの列の合計に応じてデータを取得するためにクエリビルダを使用するにはどうすればよいですか?

id apple orange 
1  1  1 
2  1  2 
3  2  2 

と私はアイテム$リンゴ+の$オレンジ> $しきい値を取得したいです。たとえば、$ threshold = 3の場合、答えはNo.3になります。 Laravelクエリビルダでこれを行うにはどうすればよいですか?

私は(フィルタを試してみました)、この質問から:How to add two columns value and perform where condition in laravel eloquent

$set = collect($set)->filter(function ($val) use ($threshold) { 
    return $val->apple + $val->orange > $threshold; 
})->values()->all(); 

それは作業を行いますが、私には本当に醜い...これを解決する他の方法はありますか?

答えて

3

私は次のクエリと同等であるとして、あなたの要件を解釈:

SELECT * 
FROM fruits 
WHERE apple + orange > $threshold 

もしそうなら、あなたはこの条件でwhereRawを使用して試すことができます:

DB::table('fruits') 
    ->whereRaw("apple + orange > ?", array($threshold)); 
    ->get(); 
+0

笑あなたが再び私を打つ:) – sumit

+0

@sumit私は実生活で使ったことがないので、私は実際にLaravelの質問にはかなり嫌です。私は一種のクエリールートを行った後、ゆっくりとLaravelコードを試しました。 –

+0

ご返信ありがとうございます。すみません、申し訳ありません。実際には、私の質問は、クエリビルダで変数を使用することも含む。編集した質問をご覧ください。ありがとう! – yifei3212

関連する問題