如何检查 Laravel 集合是不是为空?

Posted

技术标签:

【中文标题】如何检查 Laravel 集合是不是为空?【英文标题】:How to check if a Laravel Collection is empty?如何检查 Laravel 集合是否为空? 【发布时间】:2017-05-07 06:08:38 【问题描述】:

我通过做一个雄辩的查询来创建一个视图,然后将它传递给 Blade。

@if($contacts != null)
//display contacts
@else
You dont have contacts
@endif

但是它总是假设 $contacts 有一些东西,即使查询没有给我任何东西。

我做了dd($contacts) 并得到:

Collection #247 ▼
  #items: []

如何检查是否为空?

【问题讨论】:

【参考方案1】:

我在助手类中添加了全局方法

function isNullOrEmpty($value)

    return is_null($value) || empty($value);

【讨论】:

【参考方案2】:

您必须执行以下操作:

在您的“ContactController”视图中:

public function index()

   $contacts = Contact::all();
   return view('page.index', compact('contacts'))

稍后查看“index.blade.php”:

@if (collect($contacts)->isEmpty()) -- remember that $contact is your variable --
   <p>There is no record available at this time</p>
@else
   @foreach($contacts as $contact)
      $contact->name_contact
   @endforeach
@endif

现在,我想您有一个名为 Contact

的模型

【讨论】:

【参考方案3】:
if(count($profiles) > 0)
            return redirect()->action('NameController@name');
        else
            return view('user');
        

这在控制器中也可以正常工作

【讨论】:

【参考方案4】:

如果它在控制器内部,这将有所帮助

if(empty($query) 
     //do something
else
//do some stuff

【讨论】:

请不要发两次,您可以编辑您的答案。另外@alexey-mezenin 已经发布了您的解决方案。 对您的代码如何/为什么解决问题的评论将大大有助于使其更有帮助。 虽然此答案可能会解决 OP 的问题,但建议您解释其工作原理以及解决问题的原因。这有助于新开发人员了解正在发生的事情以及如何自己解决此问题和类似问题。感谢您的贡献! 如果我们分配 $query = YourModel::where('name', 'abcd')->get();如果为空,则在 dd() 上返回 [ ],但在为空的情况下返回 false($query)【参考方案5】:

您可以使用blank($contacts) Laravel 助手:blank

【讨论】:

【参考方案6】:

有几种方法:

if (!empty($contacts))

if (!contacts->isEmpty())

if (count($contacts) > 0)

if ($contacts->count() > 0)

【讨论】:

你会在 PHP 7.2+ 上遇到count($contacts) &gt; 0 的问题 if (!empty($contacts)) - 这没有给出正确的输出【参考方案7】:

您的$contacts 为空。 Bcoz 您的查询无法获取数据。一旦您的查询无法获取数据,它就会返回一个空的 arrya。所以检查一下

    @if($contacts->isEmpty())
     'Empty'  
    @else
    'you have data' 
    @endif

【讨论】:

【参考方案8】:

您的 Eloquent 查询返回一个结果数组,因此您可以使用 count

@if(count($contacts) > 0)
//Display contacts
@else
//No contacts
@endif

【讨论】:

它不是一个结果数组,它是一个实现数组接口的 Eloquent Collection 对象。 @JeremyHarris 当然你是对的,我的意思是结果是一个数组:) 这是我需要的。我试图检查我的url参数是否为空,使用empty($request-&gt;request),但即使没有设置查询字符串,它也会返回false。但是你的方法奏效了。【参考方案9】:

如果它是一个 Eloquent 集合,就像您的示例一样,您可以使用 isEmpty 集合辅助函数;

@if(!$contacts->isEmpty())
//display contacts
@else
You dont have contacts
@endif

Collections Documentation

【讨论】:

以上是关于如何检查 Laravel 集合是不是为空?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中检查模型的对象是不是为空?

Laravel/PHP - 如何检查 JSON 是不是为空? [复制]

颤动firebase检查集合是不是为空

Laravel - 检查@yield 是不是为空

Laravel 检查集合是不是包含外键

在 Laravel 中检查请求数组是不是为空