2016-12-27 9 views
1

にSQLで、それは以下のような何かをかなり些細です:Laravel:数学は、WHERE句

SELECT * FROM properties WHERE (price/acres) = 3000; 

これは、「エーカー当たりの価格は、」私がやりたい3000

あるすべてのプロパティを選択することになりますLaravelのこれ。私は、次のことを試してみました:

Property::where('price/acres', 3000)->get(); 

しかし、これは、次のSQLを作成し、バッククォートの列のタイトルを包ん:

select * from `properties` where `price/acres` = 3000 

これはエラーで(明らかに)失敗しました:あなたが使用することができますSQLSTATE[42S22]: Column not found: 1054 Unknown column 'price/acres' in 'where clause'

答えて

6

whereRawは次のとおりです。

Property::whereRaw('(price/acres) = 3000')->get(); 
+0

大丈夫ああこれはおそらくより良い方法今、私はそれについて考えるということです! – DrewT

+0

ユーザーの入力をきれいにしてエスケープしなければならないので、それほどエレガントではありませんが、それは機能しました – stevendesu

+2

数値を変数として渡す必要がある場合は、3000を?に変更して渡します。 'Property :: whereRaw( '(price/acres)=?'、[$ yourvariable]) - > get();'これは列名ではできません。 – aynber

0

あなたが正しいですあなたはLaravelのどこでそのようなステートメントを属性することはできません。あなたは常に持っている1つのオプションは、DBファサードを使用して、生のSQL文提出することである - 例えばhttps://laravel.com/docs/5.3/database#running-queries

を:

$price_per_acre = DB::select('SELECT * FROM properties WHERE (price/acres) = 3000');