Symfony 在供应商存储库中添加自定义函数

Symfony 在供应商存储库中添加自定义函数,symfony,doctrine-orm,Symfony,Doctrine Orm,我在我的Symfony网站上使用了CCDNForum的ForumBundle(该捆绑包本身并不相关,我的问题与该捆绑包无关,但更一般),我想对其进行定制,因此我自然创建了一个AcmeForumBundle,其父代为CCDNForumForumBundle。我唯一想更改的是在Category实体关联的CategoryRepository中添加一个新的自定义函数 因此,我在AcmeForumBundle中创建了一个CategoryRepository.php,扩展了CCDNForum的Categor

我在我的Symfony网站上使用了CCDNForum的ForumBundle(该捆绑包本身并不相关,我的问题与该捆绑包无关,但更一般),我想对其进行定制,因此我自然创建了一个AcmeForumBundle,其父代为CCDNForumForumBundle。我唯一想更改的是在Category实体关联的CategoryRepository中添加一个新的自定义函数

因此,我在AcmeForumBundle中创建了一个CategoryRepository.php,扩展了CCDNForum的CategoryRepository.php,这是不够的,因为Category实体的默认存储库是CCDNForum的CategoryRepository

接下来我做的事情是创建一个新的AcmeForumBundle类别实体,扩展了CCDNForum的类别实体,当然更改了默认的关联存储库

namespace Acme\ForumBundle\Entity;

use CCDNForum\ForumBundle\Entity\Category as BaseCategory;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection as ArrayCollection;

/**
 * @ORM\Entity
 * @ORM\Entity(repositoryClass="Acme\ForumBundle\Repository\CategoryRepository")
 * @ORM\Table(name="CC_Forum_Category")
 */
class Category extends BaseCategory
{
}
我添加了@ORM\Table行,因为我有一个SQL错误“acme\u category”表找不到。这个类当然是空的,因为我在实体中没有什么要更改的

使用这段代码一切正常,我在CategoryRepository中添加了自定义函数,没有问题,但是当我想要更新数据库模式时,问题就出现了。运行php应用程序/控制台时出现错误:schema:update--dumpsql

[Doctrine\DBAL\Schema\SchemaException]
The table with name 'acme.cc_forum_category' already exists.
我可以理解,因为CCDNForum的类别实体和我的Acme类别实体使用相同的表(C_Forum_类别表)

我的问题是:我做得对吗?在供应商存储库中添加自定义函数难道没有更简单的方法吗


谢谢

你的学说需要指定某种继承关系。在我周一开始工作之前,我没有足够的细节来给出完整的答案。是的,但是由于原始实体在供应商包中,我根本无法添加任何继承映射(例如@InheritanceType(“SINGLE_TABLE”)),可以吗?您可能需要映射的超类。是的,但我也有同样的问题:我无法将@MappedSuperclass添加到基本实体中,因为它位于供应商包中。