最佳方法来检查Laravel模型是否返回结果

10 浏览
0 Comments

最佳方法来检查Laravel模型是否返回结果

这个问题已经有了答案

Eloquent 集合:计数和检测是否为空

我对 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日
0
0 Comments

您的条件太复杂了,因为您不能同时使用->first()->get(),因此您不需要检查这两个条件,因为根据您调用的方法,一个条件总是无效的。正如您注意到的那样,->first()可能返回null - 因此,如果您调用该方法,您需要将结果与null进行比较-并且我建议您使用$result === null而不是使用is_null()

if ($result !== null) {
    ...

对于调用get()或返回Collection的一般方法,您将始终获得它。但它可能是空的。实际上,您不需要知道您的集合存储了多少结果。您只需要知道是否至少获得一个,因此您只需在集合对象上调用isEmpty()

if (!$collection->isEmpty()) {
  ...

请参阅集合文档

0