【问题标题】:Cannot generate model in Yii framework using Gii, warning: count(): Parameter must be an array or an object that implements CountableYii框架中无法使用Gii生成模型,警告:count(): Parameter must be an array or an object that implement Countable
【发布时间】:2019-09-10 03:51:37
【问题描述】:

每当我尝试在 Yii 框架中使用 Gii 生成模型时,它都会抛出:

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

它还提到了以下文件:

app\protected\vendor\yiisoft\yii\framework\gii\generators\model\ModelCode.php(371)

虽然存在同名问题,但没有一个能解决我的问题。我使用的是 yii 版本 1.1.14 和 windows 10

【问题讨论】:

  • 请用 yii 版本扩展您的问题描述,您使用的是 php 和操作系统
  • 完成。我正在使用 yii 版本 1.1.14 和 windows 10

标签: php yii yii1.x


【解决方案1】:

你应该将 Yii 升级到 1.1.21 - 这个 bug was fixed 差不多 2 年前了。

【讨论】:

  • 我必须使用 Yii 1.1.14,因为我需要贡献一个使用 1.1.14 版本编写的现有项目
  • 1.1.211.1.14的补丁发布,升级应该比较安全(详见github.com/yiisoft/yii/blob/master/UPGRADE)。 Yii 1.1.14 已经 6 年了,它已经知道安全问题并且它与上一个 PHP 版本不兼容 - 你应该无论如何升级,在生产中使用这个版本是不安全的。
  • 您也可以将您的 PHP 降级到 7.1 或更早版本(不推荐)
【解决方案2】:

如果你想在不升级现有 Yii 版本的情况下修复它,请按照以下步骤操作。 去

framework/gii/generators/model/ModelCode.php:371

并修复

$pk=$table->primaryKey;
$count=is_array($pk) ? count($pk) : 1;
return ($count === 2 // we want 2 columns

只需检查 $pk 是否为数组并将值存储在新变量 $count 中并返回即可。

【讨论】:

    【解决方案3】:

    将 Php 降级到 5.6 可以在旧版本的 yii 上正常工作。

    【讨论】:

    • 请不要这样建议。不再支持此版本。
    • 是的,它会解决问题,但不建议降级的东西
    猜你喜欢
    • 2020-11-02
    • 2018-11-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多