arturdoruch/doctrine-entity-manager-bundle

帮助创建和访问自己的Doctrine实体管理器类。

1.0.4 2021-04-06 15:58 UTC

This package is auto-updated.

Last update: 2024-09-06 23:21:12 UTC


README

Symfony Bundle,帮助创建和访问自己的Doctrine实体管理器类(在实体上执行操作)。

安装

composer require arturdoruch/doctrine-entity-manager-bundle

在内核类中注册bundle。

$bundles = [
    new ArturDoruch\DoctrineEntityManagerBundle\ArturDoruchDoctrineEntityManagerBundle(),
];

使用

创建实体管理器

为了创建Doctrine实体管理器类,需要扩展ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager抽象类,并实现所需的getRepository()方法,该方法返回管理实体的仓库类。

示例

<?php

namespace AppBundle\Doctrine;

use AppBundle\Entity\Foo;
use ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager;

class FooManager extends AbstractEntityManager
{
    public function getRepository()
    {
        return $this->doGetRepository(Foo::class);
    }
    
    // Custom entity manager methods.
    
    /*public function create(): Foo
    {
        $foo = new Foo();
        
        return $foo;
    }
        
    
    public function save(Foo $foo)
    {
        $this->persist($foo);
    }
    
    
    public function remove(Foo $foo)
    {
        $this->doRemove($foo);
    }*/
}

将实体管理器注册为服务

要将实体管理器注册为服务,请将arturdoruch.doctrine_entity_manager标签添加到服务配置中。

doctrine.foo_manager:
    class: AppBundle\Doctrine\FooManager
    tags: ['arturdoruch.doctrine_entity_manager']

访问实体管理器

所有管理器都注册在ArturDoruch\DoctrineEntityManagerBundle\EntityManagerRegistry类中。要获取特定的实体管理器,请将类名传递给get()方法。

在控制器中

<?php

$emr = $this->get('arturdoruch.doctrine_entity_manager_registry');
$fooManager = $emr->get(FooManager::class);
$barManager = $emr->get(BarManager::class);

在实体管理器中

<?php

namespace AppBundle\Doctrine;

use AppBundle\Entity\Foo;
use AppBundle\Doctrine\BarManager;
use ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager;

class FooManager extends AbstractEntityManager
{
    /**
     * @var BarManager
     */
    private $barManager;
    
    public function initialize()
    {
        $this->barManager = $this->getManager(BarManager::class);
    }
}

类API

ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager

用于在实体管理器类中使用的受保护方法

  • getEntityManagerName
  • initialize
  • getManager
  • persist
  • doRemove