Laravel where()vs whereLoose()方法

Jac*_*son 8 laravel laravel-5.1

Laravel wherewhereLoose方法有什么区别?

文件说:

where():

where方法在检查项目值时使用严格比较.使用whereLoose方法使用"松散"比较进行过滤.

whereLoose():

该方法与where方法具有相同的签名; 但是,所有值都使用"松散"比较进行比较.

在这种情况下,"松散比较"是什么意思?

Jos*_*ber 14

where方法使用严格比较(===),这意味着它还检查值的类型.例如,如果一个是字符串而另一个是数字,则它不会匹配.

whereLoose方法使用松散比较(==),这意味着它不会检查值的类型.例如,如果一个是字符串而另一个是数字,如果它们的值相同,它仍将匹配.

$collection = collect([['price' => 100], ['price' => 200]]);

$collection->where('price', '100'); // []

$collection->whereLoose('price', '100'); // [['price' => 100]]
Run Code Online (Sandbox Code Playgroud)

您可以在PHP文档中找到所有差异的表格.


注意:这将在Laravel 5.3中发生变化:该where方法现在将使用松散比较,并且该whereLoose方法将被删除.要使用严格相等,您将===作为第二个参数传递:

$collection = collect([['price' => 100], ['price' => 200]]);

$collection->where('price', '100'); // [['price' => 100]]

$collection->where('price', '===', '100'); // []
Run Code Online (Sandbox Code Playgroud)

  • Laravel 5.3 移除了 whereLoose() 并添加了 whereStrict(),where() 的默认行为现在是松散的 (2认同)