在供应商存储库中添加自定义功能

时间:2013-04-20 21:26:39

标签: symfony doctrine-orm

我在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表)。

我的问题是:我做的一切都好吗?是否有更简单的方法在供应商存储库中添加自定义功能?

谢谢!

0 个答案:

没有答案