【问题标题】:Laravel count(): Parameter must be an array or an object that implements CountableLaravel count():参数必须是数组或者实现了Countable的对象
【发布时间】:2018-09-22 15:52:21
【问题描述】:

在 wamp 中,我正在迁移 laravel 项目。当我在作曲家运行这个命令时-

php artisan migrate --seed

它显示了这个错误:

在 Builder.php 第 936 行:count():参数必须是数组或 实现 Countable 的对象

http://prntscr.com/j47gzs

这是 php 7.2 错误,但我使用的是 php 7.1 版本,但仍然出现计数错误。

请帮忙修复它。

【问题讨论】:

  • 显示一些你的种子代码。

标签: laravel wamp database-migration


【解决方案1】:

用最少的代码,我会吐球。问题最有可能(几乎肯定)出现在您的种子中。您在某个地方错误地使用了 count() 函数/方法 - 有充分的理由,您有几个选项可以混淆。

在 PHP 中:

假设我们有一个数组:

$array = array('One', 'Two')

现在我们要使用count() 函数查找其中的项目数:

$length = count($array) // $length = 2

您也可以使用sizeof(),它只是count() 的别名

$length = sizeof($array) // $length = 2

在 Laravel 中:

Laravel 集合对象有一个方法count(),它基本上计算集合中可填充条目的数量。这是必要的,因为即使是“空”集合也不一定会导致空集合对象。

如果你正在处理一个集合对象$collection:

$length = $collection->count() // $length = 2

这里最大的收获是,如果您使用 Eloquent 查询来播种,或者在数组上使用 collect() 助手,那么请使用 Laravel 路线。否则,只需使用原生 PHP 函数即可。

希望这有帮助!

【讨论】:

  • 我无法更改代码。它用于许多放置在 laravel 文件中。您还有其他解决方案吗?
  • 如果您无法更改代码,您希望如何修复错误?
  • 它用在很多地方,我不能到处改变。
  • 真的没有直接的方法来解决这个问题而不能编辑你的错误代码。我建议联系可以修改它的人,并要求他们调查我的建议是否真的可以解决问题。抱歉,我无法提供进一步的帮助!
【解决方案2】:

这是很久以前的事了,我现在也有同样的错误。所以我尝试检查我的模型并进行更改

protected $fillable = 'name';

成为

protected $fillable = ['name'];

它的工作。谢谢^^

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 2019-08-03
    • 2018-06-08
    • 1970-01-01
    • 2020-04-27
    • 2019-05-10
    • 2018-11-26
    • 2020-03-02
    • 2019-04-02
    相关资源
    最近更新 更多