我正在CakePHP 3中构建一个应用程序。它使用了许多遗留数据库,这些数据库不是在Cake的约定中构建的。CakePHP 3 - 在哪里放置自定义的SQL代码
我不想使用Cake提供的任何ORM功能,因为设置所有关系比编写“原始SQL”更繁琐。我们也不会对数据库结构做任何修改,所以ORM是一个非启动器。所以我要为所有东西编写原始SQL查询。
但是,我不确定其中此代码将被放置。我读过https://book.cakephp.org/3.0/en/orm/database-basics.html#running-select-statements,但它没有说明你实际上放置了哪些代码。
我不想把我的疑问放在控制器中,理想情况是因为它违背了MVC的目的。
我真正需要的是一个模型,我可以把所有的查询放在不同的函数中,并在我的控制器中引用它们。
在Cake 2.x中,只需在app/Model/
下创建一个模型,然后在需要的控制器中加载它(loadModel
)即可。但随着新的蛋糕3.x Table
和Entity
空间,我不知道这是如何适合?
我也读过Modelless Forms,但不认为他们是正确的。例如,应用程序的初始页面显示的化学品列表仅仅是SELECT
声明 - 在此阶段它根本不涉及表单或用户输入。
很明显,我也需要将数据从控制器传递给模型,例如,基于用户输入的查询。
任何意见,将不胜感激。
真的看到了吗?仅仅因为一些配置工作,你想要放弃ORM的功能和所有与之相关的功能?听起来对我来说不是一件好事,可能是交易历史上最糟糕的交易,也许是永远;)这就是说,你可以随时随地创建你喜欢的任何类,毕竟CakePHP只是PHP ,模型相关逻辑的适当位置自然就是'Model'命名空间。 – ndm
@ndm,我完全同意你说的话。我不想按照我计划的方式来完成,但给你一个想法,我们有大约5个数据库 - 没有一个使用Cake公约。大约有20张桌子。你想写超过100件事情的密钥和关系的名字?或者我在脑海中过度复杂化?我们不能在数据库级别更改任何内容(因为其他应用程序已编码)。所以这一切都必须在模型中定义。很多数据库连接 - 使用ORM还是只写SQL更容易?这似乎令人望而生畏:) – Andy
顺便提一下,如果以非ORM方式执行操作,您可以举一个例子说明将文件放在哪里(大概在'src/Model'中)以及如何将它加载到控制器中? – Andy