1

阅读 Symfony 文档,我没有看到谈论Models

我的第一个想法是:我不想混业务逻辑

我不想在我的控制器操作中使用DQL 。比 MVC 怎么样。

我的想法是下一个:

  • 在捆绑包中创建名为Models的新目录

  • 为该模型设置 __ 命名空间 __ 并(使用)附加必要的 Doctrine 类

  • 在我的模型类中,我将 DQL 逻辑与实体连接

接下来在控制器中使用当前模型。

只是简单的控制器动作,没有在控制器中混合 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

4

1 回答 1

5

将您的 DQL 保存在存储库中。并将您的域逻辑保留在服务层中。

控制器层→服务层→存储库层

通过这种方式,您可以拥有多种控制器类型——HTML、REST、命令行——所有这些都使用封装在服务层中的相同域逻辑。

存储库层封装了所有持久化功能,因此您可以将 ORM 存储库层与 ODM 存储库层或其他类型的存储库层交换 - 例如 Web 服务调用、持久化到文本文件等。

于 2013-09-15T15:57:01.020 回答