Laravel的where
和whereLoose
方法之间的区别是什么?
文档说:
where()
:where方法在检查项目值时使用严格比较。 使用whereLoose方法过滤使用" loose"比较。
whereLoose()
:此方法与where方法具有相同的签名;但是,所有 使用"松散"来比较值。比较。
在这种情况下,"松散的比较"装置
答案 0 :(得分:14)
where
方法使用严格比较(===
),这意味着它还会检查值的类型。例如,如果一个是字符串而另一个是数字,则它将不会匹配。
whereLoose
方法使用松散比较(==
),这意味着它不会检查值的类型。例如,如果一个是字符串而另一个是数字,如果它们的值相同,它仍将匹配。
$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'); // []