symfony2 - DBAL custom "model" layer



在编写Symfony2应用程序的过程中,我需要为所有数据库交互编写自定义模型层,我想使用Doctrine dbal,而不是完整的ORM。这是因为我没有设计数据库,因此必须使用一组预定义的查询。

我知道我可以从控制器中调用DBAL连接的服务,例如:

$results = $this->get('my_service')->someMethod();

将服务定义为:

src/acme/bundlename/resources/config/services.yml

services:
  my_service:
  class:  AcmeBundleNameEntityBaseEntity
  arguments:  [@database_connection]

src/acme/bundlename/entity/baseentity.php

namespace AcmeBundleNameEntity;
use DoctrineDBALConnection;
class BaseEntity
{
  private $connection;
  public function __construct(Connection $dbalConnection)  {
      $this->connection = $dbalConnection;    
 }
 public function someMethod(){
   //method logic
 }

}

现在,如何从自定义模型类调用该服务,以便我可以使用DBAL连接来执行RAW SLQ?

我还知道,我可以将每个类都定义为将注入DBAL连接的服务,但这将使我仅用于共享DBAL连接的数十个定义服务(每个模型类)。p>理想情况下,我想像许多其他框架一样,让我的课程用自定义逻辑映射数据库表。我也知道我可以在学说ORM中定义自定义"存储库",但是我只需坚持使用dbal层。

所以,我认为您需要创建一个 service,在IT中注入 DBAL依赖性,并通过此服务加载并与您的模型一起使用

public function someMethod(){
   //load the model
   $model = new MyModel();
   // Then get data from DB and fetch them to model
   //other method logic
   return $model;
}

相关内容

  • 没有找到相关文章

最新更新