首页 文章

count():参数必须是在项目中实现Countable错误的数组或对象

提问于
浏览
0

我正在做一个laravel项目,我正在学习一门课程 . 一切都很顺利,直到我不得不在我的项目中添加“雄辩 - 缓慢” . 该包工作正常,但现在我的项目中出现以下错误:

count():参数必须是实现Countable的数组或对象

我在我的视图中使用了count()函数:

@if($comments->count() > 0)
   @forech($comments as $comment)
     //displaying single comment data
  @endforeach
@endif

现在我的问题是,为什么现在会显示该错误 . 可能是因为我在我的项目中进行了“composer update”并将我的PHP版本更新为7.2,并且该版本中存在count()问题?我猜“> =”符号改变了我的PHP版本 . 我目前的laravel项目配置:

"php": ">=5.5.9",
    "laravel/framework": "5.2.*"

但是当我在我的项目中运行“php -v”时,它显示我的PHP版本现在是7.2 . 有没有办法在不丢失项目文件的情况下降级我的PHP版本?任何帮助赞赏 .

5 回答

  • 0

    您正在尝试做的事情可以用https://laravel.com/docs/5.6/collections#method-count解决

    这会转变你的

    @if(count($comment)>0)
       //displaying comments
    @endif
    

    @if($comment->count() > 0)
    //displaying comments
    @endif
    
  • 0

    你可以尝试这个

    $comment = comment::get()->all();
    
    @if(count($comment)>0)
      //displaying comments
    @endif
    
  • 0

    首先,你不应该在你的控制器中使用:

    $comment = Comment::all();
    

    $comments = Comment::all();
    

    并将其传递给视图

    return view('some_view', compact('comments'));
    

    因为它的集合你应该使用复数变量名称,以避免混淆 .

    现在在您的视图中,您应该使用:

    @if ($comments->count())
       @foreach ($comments as $comment)
          // here you display single comment data for example {{ $comment->text }}
       @endforeach
    @endif
    
  • 0

    在这里你可以做一些事情: -

    • 您可以降级PHP版本 .

    • 您可以在执行查询时更新语法: -

    改变这一点

    $comment = Comment::get();
    

    对此

    $comment = Comment::get()->toArray();
    
  • 0

    我可以解决这个问题的唯一方法是在'vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Builder.php'中编辑错误行1185:

    $originalWhereCount = is_array($query->wheres) ? count($query->wheres) : 0;
    

    我不知道这对未来的项目是否有害,但这是我让项目工作的唯一方法 .

相关问题