【问题标题】: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: []
}

如何检查是否为空?

【问题讨论】:

    标签: php laravel laravel-blade


    【解决方案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

              【讨论】:

                猜你喜欢
                • 2016-06-20
                • 2018-08-09
                • 1970-01-01
                • 2011-04-24
                • 2019-01-10
                • 2017-05-28
                • 2016-03-28
                • 2010-11-09
                • 2021-11-02
                相关资源
                最近更新 更多