判断 ORM 返回结果为空
在使用 Model::where()->get() 方法的时候,如果没有匹配条件也会返回一个空的结果集
Illuminate\Database\Eloquent\Collection {#1456
#items: []
}
这个时候不能使用简单的取反 empty() 或 =='' 判断是否有查询结果
if(! $result = Model::where()->get())
{
...
}
因为 $result 被赋值了一个空的结果集,并不为 null,所以这里的判断结果为 false
正确的判断
$result = Model::where()->get();
if(! $result->count()){
...
}
// 或者
if($result->isEmpty()){
...
}
但如果只取一条数据的时候是可以直接使用取反来判断的
if(! $result = Model::where()->first())
{
...
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
感谢分享,不过我
get出来的一般都直接进foreach循环了,遇到了的时候我会注意一下。isEmpty()isNotEmpty()用
blank()filled()啊 :smirk:兄弟,看一遍laravel文档会有很大帮助
统一转成数组不就好了
get() 获取的是数据集的实例,这个数据集 就是一个 套在多个模型实例上的,如果判断 数据集里是否为空,就要用 数据集自己的 判断方法 first() 获取的是模型实例,空的话返回就是null
所以熟读文档,了解每个官方或者框架的函数返回值和返回类型是很重要的
这篇文章非常好。