4

我正在学习 Yii,我想知道我是否使用 Gii 生成模型和 CRUD 文件,然后我手动修改了这些文件,然后我更改了我的数据库,我应该再次运行 Gii 吗?它会覆盖我在模型文件中的更改吗?如果是这样,在不丢失我以前的更改的情况下更新我的模型、控制器和视图文件以反映数据库中的更改的最佳解决方案是什么?

4

2 回答 2

5

Gii 旨在为您提供一开始的基本代码,然后您对其进行修改以满足您的需求。

是的,如果您再次运行它,它将覆盖您的文件(但您需要明确选中“覆盖”复选框)。

所以推荐的做法是先尽可能完整地设计数据库结构,然后用 Gii 生成模型/CRUD/。

然后在没有 Gii 的情况下手动完成后续更改。

一个小提示:如果你再次运行 Gii,你可以在 diff 中查看更改并手动复制它们。

一旦您获得更多经验,您很可能会意识到没有必要这样做。

于 2015-06-02T03:06:54.717 回答
2

您问题的真正解决方案是由 Gii 生成所有初始模型,并将它们保持在单独的目录中,例如 app\models\base

并将这些模型命名为 ModelNameBase

在 app\models 创建您自己的模型,例如 ModelName 让 app\models 扩展基本模型。

这样,您可以根据需要修改 app\models。

每当您有数据库更改时,请重新生成基本模型。

于 2018-12-16T06:31:45.913 回答