我在Symfony网站上使用CCDNForum的ForumBundle(捆绑包本身不相关,我的问题与此捆绑特别无关,但更一般),我想自定义它,所以我自然创建了一个AcmeForumBundle其父级是CCDNForumForumBundle。我唯一想要改变的是添加一个新的自定义函数,比如说与Category实体关联的CategoryRepository。
所以我在我的AcmeForumBundle中创建了一个扩展了CCDNForum的CategoryRepository.php的CategoryRepository.php,这还不够,因为Category实体的默认存储库是CCDNForum的CategoryRepository。
我接下来要做的是创建一个新的AcmeForumBundle类实体,扩展CCDNForum的Category实体,当然改变默认的相关存储库
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_category”表。该课程当然是空的,因为我在实体中没有任何改变。
使用此代码一切正常,我在CategoryRepository中添加了我的自定义函数没有问题,但是当我想要更新数据库模式时出现问题。我在运行php app / console doctrine时遇到错误:schema:update --dump-sql
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'acme.cc_forum_category' already exists.
我可以理解,因为CCDNForum的Category实体和我的Acme Category实体使用相同的表(C_Forum_Category表)。
我的问题是:我做的一切都好吗?是否有更简单的方法在供应商存储库中添加自定义功能?
谢谢!