在CakePHP 3中哪里放置自定义SQL代码?

n8ghc7c1  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(161)

我正在用CakePHP 3构建一个应用程序。它使用了一些遗留的数据库,这些数据库不是用Cake约定构建的。
我不想使用Cake提供的任何ORM特性,因为建立所有关系比只写“原始SQL”要乏味得多。我们也不打算对数据库结构做任何更改,所以ORM是不可能的。所以我打算为所有内容写原始SQL查询。
然而,我不确定这段代码会放在哪里。我读过https://book.cakephp.org/3.0/en/orm/database-basics.html#running-select-statements,但它没有说你实际上把代码放在哪里。
我不想把我的查询放在一个理想的控制器中,因为这违背了MVC的目的。
所有我真正需要的是一个模型,我可以把我所有的查询在不同的函数和引用他们在我的控制器(s)。
在Cake 2.x中,很容易在app/Model/下创建一个模型,然后在控制器中需要的地方加载它(loadModel)。但是对于新的Cake 3.x TableEntity空间,我不知道这如何适应?
我也读过关于Modelless Forms的文章,但我认为它们也不正确。例如,应用程序的初始页面显示了一个化学品列表,这只是一个SELECT语句-在这个阶段,它根本不涉及表单或用户输入。
显然,也会有需要将数据从控制器传递到模型的情况,例如,基于用户输入的查询。

wsxa1bj1

wsxa1bj11#

正如评论中提到的,我建议不要放弃ORM,它有很多好处,从长远来看,你很可能会后悔。
设置表应该不是什么大问题,您可以对所有内容进行烘焙,然后使用IDE进行重构(例如,IDE可以执行重命名引用和文件名的脏工作),然后手动设置规则和关联,这可能有点乏味,但总体上非常简单,因为除了外键之外,对于数据库模式,实际上没有太多要配置的内容。和可能的关联属性名称(这可能也需要更新可能的实体@property注解)--可能这里和那里也有条件和东西,但是哦,好吧。
CakePHP就是PHP,所以你可以在Model命名空间中创建一个类(这很适合模型相关的逻辑),然后在任何需要的地方像使用其他类一样使用它。
第一个
另请参阅

*Cookbook〉数据库访问和ORM〉关联-将表链接在一起〉属于关联

相关问题