Laravel Eloquent:检测为空或计数

Posted

技术标签:

【中文标题】Laravel Eloquent:检测为空或计数【英文标题】:Laravel Eloquent: Detect is empty or count 【发布时间】:2019-01-15 14:33:06 【问题描述】:

主要问题是如何检测一个 eloquent 集合结果是否为空,laravel 建议如何识别这一点?

我对此有两个不同的问题,也许它们彼此相关或不相关,

第一个:

我怎样才能得到$result = $user->delete() OR $result = $user->save(); 方法的结果?

我的意思是检查操作是否完成

为此使用if($result)... 是否正确或足够?

第二个:

获取$result =User::where(conditions)->get()是否为空的正确方法是什么?

请告诉我涵盖所有情况的正确方法,

【问题讨论】:

首先,请始终查阅 API 文档或 phpDoc 块。它应该说明期望的返回类型/值。 【参考方案1】:

#1

if($user->delete())
  return true;
    else
  return false;

if($user->save())
  return true;

#2

要确定是否有任何结果,您可以执行以下任一操作:

if (!$user->isEmpty())  
if ($user->count())  
if (count($user))  

注释/参考文献

http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_first http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_isEmpty http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_count http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_count

【讨论】:

【参考方案2】:

删除和保存是同步的,所以除非抛出异常,否则可以安全地完成。

对于第二个问题,你可以这样做:

User::where(conditions)->count();

还有isEmptyisNotEmpty 用于收藏。

另一种方式是使用exists/doesntExist:

User::where(conditions)->exists(); // or doesntExist()

【讨论】:

【参考方案3】:

第一

$user->delete()$user->save() 都返回 true 或 false。所以你可以这样做。

if($user->save())
    return true;
else
    return false;

第二

根据你的说法。

$result = User::where(conditions)->get();    
if(count($result)
     return true;
else
     return false;

【讨论】:

【参考方案4】:

1) 是的,没关系。或者你可以使用

if($user->delete()) 
  return true;
 else 
  return false;

2) 你可以使用函数empty()

$result = User::where(conditions)->get()
if (!empty($result))  
 // if it is not empty, do the following...

【讨论】:

以上是关于Laravel Eloquent:检测为空或计数的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 带计数的多重连接(不是 Eloquent)

Laravel/Eloquent/DB 查询 - 当为空且不为空时加入

laravel中判断eloquent是否为空

Laravel Eloquent:计数项目模型关系

Laravel Eloquent 判断取出的结果集是否为空

Laravel Eloquent Query - 限制计数()