【发布时间】:2015-07-02 13:02:44
【问题描述】:
我正在尝试使用新的 CakePHP 3.0,但在确定查询的位置时遇到了一些麻烦。
让我们说我们有类似的东西,直接来自他们的文档。
$articles = $this->Articles->find('all', [
'fields' => ['id', 'title'],
'conditions' => [
'OR' => ['title' => 'Cake', 'author_id' => 1],
'published' => true
],
'contain' => ['Authors'],
'order' => ['title' => 'DESC'],
'limit' => 10,
]);
我把这段代码放在哪里?在我的控制器类或模型文件夹中。
如果我需要将此代码放在我的控制器类中,并且将来我想重用此查询。我必须在另一个控制器中重写查询吗?
如果在模型文件夹中,我将它放在哪个文件夹中?行为、实体还是表格?我将如何使用它?
谢谢
【问题讨论】:
-
您必须只在控制器中编写代码,如果您想重用代码,则必须创建组件。网址:book.cakephp.org/2.0/en/controllers/components.html
-
很遗憾所有数据库sql相关的代码都不能只组织在model文件夹中。谢谢你的回答。
-
@ViswanathPolaki 这是不正确的。查询可以放在控制器中,但通常最好放在更可重用的模型中。
-
我建议您从阅读 the docs(complete 文档)开始,因为您似乎缺乏一些基础知识。表方法、查找器、行为,这些都可以帮助您重用模型相关的代码。
标签: php mysql cakephp cakephp-3.0