在getRepository中找不到特定的自定义存储库,但其他存储库工作正常



在我的应用程序中,我有几个自定义存储库,它们与各自的实体类和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文件。 弗兰克,是的,存储库类名与其文件名相同。

相关内容

  • 没有找到相关文章

最新更新