我正在学习Yii,我想知道我是否使用Gii生成模型和CRUD文件然后我手动修改了这些文件然后我改变了我的数据库我应该再次运行Gii吗?是否会覆盖模型文件中的更改?如果是这样,更新我的模型,控制器和视图文件以反映数据库中的更改而不丢失以前的更改的最佳解决方案是什么?
答案 0 :(得分:5)
Gii旨在在开始时为您提供基本代码,然后根据您的需要对其进行修改。
是的,如果再次运行它会覆盖您的文件(但您需要明确检查"覆盖"复选框)。
所以建议的做法是先设计数据库结构,然后再用Gii生成模型/ CRUD /。
然后在没有Gii的情况下手动完成后续更改。
小提示:如果再次运行Gii,可以查看diff中的更改并手动复制它们。
一旦获得更多经验,您很可能意识到没有必要这样做。
答案 1 :(得分:1)
您问题的真正解决方案是通过Gii生成所有初始模型,并将它们保留在单独的目录中,例如app \ models \ base
并将这些模型命名为ModelNameBase
在app \ models上创建自己的模型,例如ModelName 让app \ models扩展基本模型。
这样,您可以根据需要修改应用程序\模型。
无论何时更改数据库,都将重新生成基本模型。