我正在学习Yii,我想知道如果我使用Gii生成模型和CRUD文件,然后我手动修改了这些文件,然后我改变了我的数据库,我应该再次运行Gii吗?它会覆盖我在模型文件中的更改吗?如果是这样,什么是最好的解决方案来更新我的模型,控制器和视图文件,以反映数据库中的更改,而不丢失我以前的更改?
uqdfh47h1#
Gii的设计是在一开始为您提供基本代码,然后您修改它以满足您的需要。是的,如果您再次运行它,它将覆盖您的文件(但您需要明确选中“覆盖”复选框)。因此,推荐的做法是首先尽可能完整地设计数据库结构,然后使用Gii生成模型/ CRUD /。然后,在没有Gii的情况下手动完成后续更改。小提示:如果您再次运行Gii,您可以在diff中查看更改并手动复制它们。一旦你有了更多的经验,很可能你会意识到没有必要这样做。
hivapdat2#
你的问题的真正解决方案是用Gii生成你所有的初始模型,并将它们保存在一个单独的目录中,例如app\models\base并将这些模型命名为ModelNameBase在app\models创建您自己的模型,例如ModelName让app\models扩展基本模型。通过这种方式,您可以根据需要修改应用程序\模型。每当数据库发生更改时,请重新生成基础模型。
2条答案
按热度按时间uqdfh47h1#
Gii的设计是在一开始为您提供基本代码,然后您修改它以满足您的需要。
是的,如果您再次运行它,它将覆盖您的文件(但您需要明确选中“覆盖”复选框)。
因此,推荐的做法是首先尽可能完整地设计数据库结构,然后使用Gii生成模型/ CRUD /。
然后,在没有Gii的情况下手动完成后续更改。
小提示:如果您再次运行Gii,您可以在diff中查看更改并手动复制它们。
一旦你有了更多的经验,很可能你会意识到没有必要这样做。
hivapdat2#
你的问题的真正解决方案是用Gii生成你所有的初始模型,并将它们保存在一个单独的目录中,例如app\models\base
并将这些模型命名为ModelNameBase
在app\models创建您自己的模型,例如ModelName让app\models扩展基本模型。
通过这种方式,您可以根据需要修改应用程序\模型。
每当数据库发生更改时,请重新生成基础模型。