模型或控制器中的学说查询?

Posted

技术标签:

【中文标题】模型或控制器中的学说查询?【英文标题】:doctrine query in model or controller? 【发布时间】:2012-03-15 18:19:23 【问题描述】:

我在一个项目中同时使用 Codeigniter 和 Doctrine。我已经使用这两种工具进行了所有设置。但我不确定我应该在哪里有这段代码:

$query = $em->createQuery('SELECT u FROM sessions u');
$sessions = $query->getResult(); // array of User objects

我应该把它放在控制器还是模型/实体中?一开始我觉得我应该把这种逻辑放在 Sessions 模型中,但它需要实体管理器 $em,我认为应该在控制器中。

谢谢,这让我在过去的半个小时里发疯了。

【问题讨论】:

【参考方案1】:

很多人喜欢创建称为 DAO 或数据访问对象的对象来存储此类信息。

DAO 包含可以调用并返回所需数据的实体管理器和方法。例如,此函数将驻留在 DAO 中:

function findEmployeeById($emp_id)

它将包含用于从数据库中检索员工的查询。在您的控制器中,您只需使用 DAO 而不是拥有实体管理器并在该级别处理它。

但这真的取决于偏好和你的项目有多大。

【讨论】:

我会将类似的东西 (DAO) 放在 codeigniter 的什么位置?在模型中,还是作为库的一部分? 我对codeigniter不是很熟悉,但我可能会把它和模型放在一起。

以上是关于模型或控制器中的学说查询?的主要内容,如果未能解决你的问题,请参考以下文章

学说减慢了表现

Laravel - 在控制器或模型中构建查询?对于大型网络应用

我应该在模型或控制器中写入查询(sequelize)?

Symfony - 使用学说获取最后一个 ID

如何防止不需要的学说在symfony 4中持续存在?

Laravel 函数属于模型或控制器