检查模型是否在laravel中返回结果的最佳方法

时间:2018-08-14 16:28:24

标签: php laravel eloquent laravel-5.1

我对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。

1 个答案:

答案 0 :(得分:0)

您的条件没有必要太复杂,因为您不能同时执行->first()->get(),因此您无需检查这两个条件,这取决于调用的方法,一个条件总是存在的。正如您所注意到的,->first()可以返回null-因此,如果调用该方法,则会根据null检查结果-我建议您使用$result === null而不是使用{{ 1}}:

is_null()

对于调用if ($result !== null) { ... 或通常返回get()的方法,您将始终得到它。但是它可以是空的。实际上,您不需要知道您的收藏存储了多少结果。您只需要知道是否至少有一个,因此只需调用集合对象上的Collection

isEmpty()

请参见docs on Collection