where
メソッドは、厳密な比較(===
)を使用します。つまり、値の型もチェックされます。たとえば、1つが文字列であり、もう1つが数字である場合、それは決して一致しません。
whereLoose
メソッドは、緩い比較(==
)を使用します。つまり、値の型はチェックされません。たとえば、1つが文字列で、もう1つが数字の場合、値が同じ場合でも一致します。
$collection = collect([['price' => 100], ['price' => 200]]);
$collection->where('price', '100'); // []
$collection->whereLoose('price', '100'); // [['price' => 100]]
the PHP docsのすべての違いの表があります。
注:これはLaravel 5.3に変更しようとしている:where
方法は今緩い比較を使用し、whereLoose
方法が削除されます。厳密な等価を使用するには、第二引数として===
を渡します:
$collection = collect([['price' => 100], ['price' => 200]]);
$collection->where('price', '100'); // [['price' => 100]]
$collection->where('price', '===', '100'); // []
[ドキュメント](http://php.net/manual/en/types.comparisons.php)も、結果に関する詳細が含まれています両方の演算子を使用する場合の比較 –
ありがとうございます。同じコード行が可能でしょうか?$ tag =($ type == 'paid')? 0:1; $ contracts = $ user-> addressbook_user->ここで( 'paid_or_not'、$ tag); 2つの異なるOS(UbuntuとMac OS X Yosemite)では、同じmysqlバージョンを使って、tinyintとしてpaid_or_notを使用すると、2つの異なる結果が得られましたか?代わりに、whereLooseは同じ正しい結果を返しましたか? @編集:私はPHPマニュアルの表をチェックします。 – Jacson
本当にありがとうございました。 – antoniputra