如何在Symfony 2中更改默认的EntityRepository基类?
我在自定义捆绑包中创建了一个扩展的EntityRepository类:
namespace MyApp\Bundle\ORM;
use Doctrine\ORM\EntityRepository;
class MyAppEntityRepository extends EntityRepository
{
}
如何更改Symfony配置,以便它使用MyAppEntityRepository作为我所有实体的基本EntityRepository类?
答案 0 :(得分:2)
如果您查看reference documentation for the Symfony Doctrine Bundle,您会看到default_repository_class
选项。所以在你的config.yml
文件中:
doctrine:
orm:
entity_managers:
default:
auto_mapping: true
naming_strategy: doctrine.orm.naming_strategy.underscore
default_repository_class: MyApp\Bundle\ORM\MyAppEntityRepository
这与Doctrine的默认config.yml
设置略有不同,因此您必须将auto_mapping
和naming_strategy
选项移至其中 - 我已将其包含在内以上这些仅供参考,您问题的主要答案是default_repository_class
选项。
答案 1 :(得分:0)
您可以在Entity类注释中指定自定义存储库类,例如:
// src/AppBundle/Entity/Product.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="AppBundle\Entity\ProductRepository")
*/
class Product
{
//...
}
Doctrine的docs提供了更多相关信息。
答案 2 :(得分:0)
Doctrine\ORM\Configuration
班级 on line 706 是一种方法getDefaultRepositoryClassName()
。正如您在方法中看到的,它使用配置中的命名键defaultRepositoryClassName
。因此,您可以使用以下密钥在doctrine配置中设置自定义存储库:
在Zend Framework 2中:
'doctrine' => array(
'configuration' => array(
'orm_default' => array(
'default_repository_class' => 'My\Custom\DefaultRepository'
)
)
)
在Symfony :
您的default_repository_class
文件中的 config.yml
键
或者您可以获取Configuration
个实例并使用setDefaultRepositoryClassName
方法 from line 688 ,同时显示here in the documentation:
$config->setDefaultRepositoryClassName($defaultRepository);