判断 ORM 返回结果为空

Laravel框架
388
0
0
2022-04-21

在使用 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())
{
    ...
}