阅读Symfony文档我没有看到讨论模型。
我想到的第一个想法是:我不想混淆业务逻辑
我不想在我的控制器操作中使用 DQL 。那么MVC比。
我的想法是下一个:
在包中创建名为模型
为该模型设置__ namespace __并且(使用)附加必要的Doctrine类
接下来在控制器中使用当前模型。
只需简单的控制器操作就可以在控制器中混合使用DQL
use Company\Bundle\Models\MyModel;
public function getRecentMembersAction($max = 3)
{
$model = new Model() // get model
$list = $model->getRecentMembers($max); // DQL
// Render
return $this->render('CompanyBundle:Controller.index.html.twig', array('list'=>$list);
}
我的问题是这是一个好主意和良好做法吗?
SLOVED: http://docs.doctrine-project.org/en/latest/reference/annotations-reference.html#entity
答案 0 :(得分:5)
将您的DQL保持在repositories。并将您的域逻辑保留在Service Layer。
中控制器层→服务层→存储库层
通过这种方式,您可以使用多种控制器类型 - HTML,REST,命令行 - 所有控制器类型都使用封装在服务层中的相同域逻辑。
存储库层封装了所有持久性功能,以便您可以将ORM存储库层与ODM存储库层或其他类型的存储库层交换 - 如Web服务调用,持久保存到文本文件等。