Laravel where()vs whereLoose()方法

时间:2015-11-13 16:21:24

标签: laravel laravel-5.1

Laravel的wherewhereLoose方法之间的区别是什么?

文档说:

  

where()

     

where方法在检查项目值时使用严格比较。   使用whereLoose方法过滤使用" loose"比较。

     

whereLoose()

     

此方法与where方法具有相同的签名;但是,所有   使用"松散"来比较值。比较。

在这种情况下,"松散的比较"装置

1 个答案:

答案 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'); // []