我对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。
答案 0 :(得分:0)
您的条件没有必要太复杂,因为您不能同时执行->first()
和->get()
,因此您无需检查这两个条件,这取决于调用的方法,一个条件总是存在的。正如您所注意到的,->first()
可以返回null
-因此,如果调用该方法,则会根据null
检查结果-我建议您使用$result === null
而不是使用{{ 1}}:
is_null()
对于调用if ($result !== null) {
...
或通常返回get()
的方法,您将始终得到它。但是它可以是空的。实际上,您不需要知道您的收藏存储了多少结果。您只需要知道是否至少有一个,因此只需调用集合对象上的Collection
:
isEmpty()