我目前正在研究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版本?任何帮助表示赞赏。
答案 0 :(得分:0)
您要尝试执行的操作可以通过https://laravel.com/docs/5.6/collections#method-count
来解决这将使您
@if(count($comment)>0)
//displaying comments
@endif
到
@if($comment->count() > 0)
//displaying comments
@endif
答案 1 :(得分:0)
您可以尝试这个
$comment = comment::get()->all();
@if(count($comment)>0)
//displaying comments
@endif
答案 2 :(得分: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
答案 3 :(得分:0)
在这里您可以做一些事情:-
对此进行更改
$comment = Comment::get();
对此
$comment = Comment::get()->toArray();
答案 4 :(得分:0)
我唯一能解决此问题的方法是,使用以下命令编辑“ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Builder.php”中的错误行1185:
$originalWhereCount = is_array($query->wheres) ? count($query->wheres) : 0;
我不知道这对将来的项目是否有害,但这是使我的项目正常工作的唯一方法。