【发布时间】:2019-01-21 13:53:54
【问题描述】:
我是 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。
【问题讨论】:
-
@ZakariaAcharki 谢谢,但这不起作用,因为结果不是
null,它将是一个对象 -
->get()结合if(count($results) != 0)应该是你所需要的。count()在 Collection 上的工作方式与在数组上的工作方式相同。 -
@TimLewis 我显然没有任何线索,因为我正在尝试建议的事情但无济于事。我认为这个问题就在我身上。我需要更多经验。还是谢谢。
-
$results = FooBar::where(['col' => 'someVal', 'col3' => 'value'])->get(); if(count($results) != 0) { // something returned }应该没有任何问题,这就是我每天使用的。副本中也建议了类似的内容,因此请尽可能阅读。不用担心,最终它会点击。坚持下去。 -
findOrFail()可能会有所帮助。
标签: php laravel eloquent laravel-5.1