使用Laravel Eloquent 会有一个很让我担心的问题,如何判断查询数据是否存在
$result=Email::query()->where('id',10000)->first();
$result=Email::query()->where('type',1)->get();
有时候查询结果返回null有时返回空集合,而空集合仅仅通过empty()或者直接if(!$result)
判断是认为有值得
于是仔细翻看了文档:
first() 单条查询
$result=Email::query()->where('id',10000)->first();
当查询单条时,结果不存在Eloquent返回NULL,这是判断方式有:
如果想看 $user
是否有记录并且有记录时会使用:
$result=Email::query()->where('id',10000)->first();
if ($result === null) {
// 没记录
}
如果仅仅想看 $user
是否有记录:
if (Email::query()->where('id',10000)->count() > 0) {
// 有记录
}
更好的方法:
if (Email::query()->where('id',10000)->exists()) {
// 有记录
}
get() 多条查询
多条查询时Eloquent 空值时返回一个空集合;
$result=Email::query()->where('type',1)->get();
// object(Hyperf\Database\Model\Collection)#121092 (1) {
["items":protected]=>
array(0) {
}
}
因此判空的方式是:
$result=Email::query()->where('type',1)->get();
if($result->isEmpty()){
//
}
Email::query()->where(‘type’,1)->get() 写法来自Hyperf Framework,Hyperf提供了Laraval Eloquent组件,只是使用方法稍有变动