判斷 ORM 返回結果為空

MArtian發表於2021-06-09

在使用 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 協議》,轉載必須註明作者和本文連結

相關文章