在烘焙任何文件之前计划和创建数据库?

Plan and create database before baking any files?

我真的是 cakephp (3) 的新手。我有一个关于烘焙模型、视图和控制器的一般性问题。

我是否必须在烘焙任何 m.、v. 或 c 之前完全计划和创建数据库方案?

我害怕在扩展我的数据库方案时覆盖我的代码。我在想这样的情况:

我有两个 table "Articles" 和 "Users"。我烘焙了 mvc-s,有一个小而完整的网站。我出于某些验证器原因(例如)调整了 Users-Model/Entity。

现在,两周后,我想添加一个 "Group" table,其中一个用户可以属于多个组。

通常,我可以重新烘焙 Users-mvc-files。但这会覆盖我的整个网站。

我做错了吗?扩展 tables 时是否必须手动修改 mvc 文件?

扩展 cakephp 网站的最佳做法是什么?

非常感谢。

是的,通常您必须在构建 MVC 之前规划数据库方案。

如果 alter/changes 变成 table,您应该手动进行更改,否则烘焙将覆盖您所做的所有代码。

一切顺利

您可以为新的 table、组(应该是复数)烘焙 MVC,然后更新其他 table 中的关联(如果有的话)。例如,如果 Users 属于 Groups,则在烘焙 Groups table 之后,您可以添加:

// in /src/Model/Table/UsersTable.php
$this->belongsTo('Groups', [
    'foreignKey' => 'group_id'
]);

当然,这假设您已将 'group_id' 字段添加到数据库中的用户 table。

如果您的 table 很小并且您的数据模型保持相当静态,这是一个很好的解决方案。但是,如果您正在使用许多 tables 并且您仍然定期对模型进行更改,我建议您在取消所有控制器更改几次后执行我所做的事情。

CakePHP 3 在其控制器模板中非常酷地使用了 Elements。您可以将 cakephp 供应商模板复制到您的 src 目录中,然后提供您的其他控制器方法(如 UsersController 中的 login()/logout())作为元素。然后测试模型并包含该模型的适当元素。

这样你就可以烘烤而不用担心丢失所有更改。