【问题标题】:Symfony2 Create ModelsSymfony2 创建模型
【发布时间】:2013-09-15 15:43:07
【问题描述】:

阅读 Symfony 文档,我没有看到关于模型的内容。

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

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

接下来是我的想法:

  • 在捆绑包中创建名为 Models

  • 的新目录
  • 为该模型设置 __ 命名空间 __ 并 (use ) 附加必要的 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);
    }

我的问题是这是否是一个好主意和好的做法?

受宠: http://docs.doctrine-project.org/en/latest/reference/annotations-reference.html#entity

【问题讨论】:

    标签: symfony


    【解决方案1】:

    将您的 DQL 保存在 repositories 中。并将您的域逻辑保存在 Service Layer 中。

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

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

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

    【讨论】:

    • 我正要回答同样的问题:) +1
    • 等一下。我的实体Product 必须在Entity 目录ProductRepository 内再有一个类@ 对。通过Product Entity 中的注释,我设置了repositoryClass 需要使用的内容。而我的ProductRespository 包含DQL
    • 我发现这个并且明白了:docs.doctrine-project.org/en/latest/reference/…
    猜你喜欢
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多