在我的应用程序中,我有几个自定义存储库,它们与各自的实体类和orm.yml文件映射。
它们都以相同的方式和结构定义,当然除了它们的名称和成员。
然而,当我尝试获取自定义存储库时,仅针对特定的存储库,我就会获得存储库的超类而不是正确的存储库。
$a = $this->em->getRepository('MyAppCommonBundle:Activity'); //doesn't work
$b = $this->em->getRepository('MyAppCommonBundle:Activity:User'); //works
$c= $this->em->getRepository('MyAppCommonBundle:ActivityStatus'); //works
MyAppCommonBundle 被定义为: MyAppCommonBundle' => 'MyApp\CommonBundle\Entity
$a返回错误的超类 Doctrine\ORM\EntityRepository,而$b返回正确的 MyApp\CommonBundle\Repository\UserRepository $c是 MyApp\CommonBundle\Repository\ActivityStatus
所有实体都位于同一文件夹中 MyApp\CommonBundle\Entity。 所有存储库也位于同一位置 MyApp\CommonBundle\Repository。
Activity.orm.yml:
MyAppCommonBundleEntityActivity:
type: entity
table: activity
repositoryClass: MyAppCommonBundleRepositoryActivityRepository
indexes:
例如User.orm.yml:
MyAppCommonBundleEntityUser:
type: entity
table: user
repositoryClass: MyAppCommonBundleRepositoryUserRepository
活动存储库:
<?php
namespace MyAppCommonBundleRepository;
use DoctrineORMEntityRepository;
class ActivityRepository extends EntityRepository
{
用户存储库:
<?php
namespace MyAppCommonBundleRepository;
use DoctrineORMEntityRepository;
class UserRepository extends EntityRepository
...
如上所述,找到用户和其他存储库,活动不是...
我尝试清除缓存,重建实体没有效果。 显然试图寻找错别字等,但看起来不错。
知道吗? 谢谢
Cerad,没有相关的ORM注释。 活动实体:
<?php
namespace MyAppCommonBundleEntity;
use DoctrineORMMapping as ORM;
/**
* Activity
*
* @ORMTable(name="activity"...)
* @ORMEntity
*/
class Activity
{...
用户实体:
<?php
namespace MyAppCommonBundleEntity;
use DoctrineORMMapping as ORM;
/**
* User
*
* @ORMTable(name="user"...)
* @ORMEntity
*/
class User
{
....
根本没有orm.xml文件。 弗兰克,是的,存储库类名与其文件名相同。