我对cakephp(3)真的很陌生。关于烘焙模型,视图和控制器,我有一个普遍的问题。
在烘焙任何m。,v。或c?
之前,我是否必须完全规划和创建数据库方案当我扩展数据库方案时,我害怕覆盖我的代码。我想到这样的情况:
我有两张桌子"文章"和"用户"。我烤了mvc-s,有一个小而完整的网站。我出于某些验证原因(例如)调整了用户模型/实体。
现在,两周后,我想添加一个" Group"表,一个用户可以属于多个组。
通常,我可以重新使用Users-mvc文件。但这会覆盖我的整个网站。
我犯了错误吗?扩展表时是否必须手动修改mvc文件?
扩展cakephp网站的最佳做法是什么?
非常感谢提前。
答案 0 :(得分:0)
是的,通常您必须在烘焙MVC之前计划数据库方案。
如果表中有任何更改/更改,您应该手动执行更改,否则烘焙将覆盖您执行的所有代码。
一切都是最好的
答案 1 :(得分:0)
你可以为新表,Groups(应该是复数)烘焙MVC,然后更新其他表中的关联(如果有的话)。例如,如果“用户”属于“组”,则在烘焙“组”表后,您可以添加:
// in /src/Model/Table/UsersTable.php
$this->belongsTo('Groups', [
'foreignKey' => 'group_id'
]);
当然,这假设您已添加了' group_id'字段到数据库中的Users表。
如果您的表很小并且您的数据模型保持相当静态,这是一个很好的解决方案。但是如果你正在使用许多表并且你仍然经常对模型进行更改,我会建议做几次吹掉所有控制器更改之后做的事情。
CakePHP 3在其控制器模板中非常酷地使用了Elements。您可以将cakephp供应商模板复制到src目录中,然后将其他控制器方法(如UsersController中的login()/ logout())作为元素提供。然后测试模型并包含该模型的相应元素。
通过这种方式,您可以烘烤而不用担心丢失所有更改。