最佳方法来检查Laravel模型是否返回结果
最佳方法来检查Laravel模型是否返回结果
这个问题已经有了答案:
我对 Laravel 相当新,正在寻找最佳方法来检查模型是否返回了任何结果。
例如下面的示例将在没有找到结果时返回 null
。如果您只想要第一个结果,那么这是完美的。
$results = FooBar::where(['col' => 'someVal', 'col3' => 'value'])->first();
无论是否有结果,下面的示例都将返回一个对象。
$results = FooBar::where(['col' => 'someVal', 'col3' => 'value'])->get();
因此,我每次都要做到这一点:
if($results && count($results)) { // then do stuff }
我有调用各种模型的方法,代码看起来很丑,效率也很低,有太多的 count()
函数。
提醒一句,由于我们的 PHP 版本(不在我的控制范围内),我目前正在使用 Laravel 5.1。
admin 更改状态以发布 2023年5月23日
您的条件太复杂了,因为您不能同时使用->first()
和->get()
,因此您不需要检查这两个条件,因为根据您调用的方法,一个条件总是无效的。正如您注意到的那样,->first()
可能返回null
- 因此,如果您调用该方法,您需要将结果与null
进行比较-并且我建议您使用$result === null
而不是使用is_null()
:
if ($result !== null) { ...
对于调用get()
或返回Collection
的一般方法,您将始终获得它。但它可能是空的。实际上,您不需要知道您的集合存储了多少结果。您只需要知道是否至少获得一个,因此您只需在集合对象上调用isEmpty()
:
if (!$collection->isEmpty()) { ...
请参阅集合文档