判斷 Eloqument 模型查詢資料結果是否為空

xiaocailc發表於2018-09-28

前言

由於官方文件指出:查詢構造器查詢出來的資料,不要使用 count 方法來確定是否存在與查詢相匹配的記錄,應該使用 exists 和 doesntExist 方法,所以,我們應該儘量避免使用count方法來判斷是否查詢到了結果集。

方法一

當使用查詢構造器的時候,可以使用exists()或者doesntExist()方法來判斷有或者沒有查詢到結果集,該方法返回的是Boolean型別資料,當使用exists()方法時,查詢到結果集返回true,否則返回false;doesntExist()方法返回的資料反之。

return DB::table('orders')->where('finalized', 1)->exists();

return DB::table('orders')->where('finalized', 1)->doesntExist();

當使用Eloqument模型查詢資料時,使用方法如下(以User模型為例):

return Users::where('email','xxx@qq.com')->exists();

return Users::where('email','xxx@qq.com')->doesntExist();

方法二

由於 Eloquent 的集合物件繼承了 Laravel 的 集合基類,因此我們可以使用Laravel集合中的方法對查詢結果集進行判斷。

這種方法返回的也是Boolean型別資料,詳細方法如下:

$users = User::where('active', 1)->all();

return $users->isEmpty();

return $users->isNotEmpty();

總結

雖然我親測使用count()方法雖然也能判斷出搜尋結果是否為空,但是官方明確指出:不要使用 count 方法來確定是否存在與查詢相匹配的記錄,所以我們還是儘量使用官方給出的這兩種方法去對結果集進行驗證吧,避免開發不必要的出錯誤,如果對您有幫助,就點個贊吧!!!

相關文章