我在我的 Symfony 网站中使用 CCDNSForum 的 ForumBundle(包本身不相关,我的问题与这个包无关,但更笼统),我想自定义它,所以我自然地创建了一个 AcmeForumBundle,其父级是CCDNSForumForumBundle。我唯一要更改的是在与 Category 实体关联的 CategoryRepository 中添加一个新的自定义函数。
所以我在我的AcmeForumBundle 中创建了一个CategoryRepository.php,扩展了CCDNForum 的CategoryRepository.php,这还不够,因为Category 实体的默认存储库是CCDNForum 的CategoryRepository。
我做的下一件事是创建一个新的 AcmeForumBundle 类别实体,扩展 CCDNSForum 的类别实体,当然更改默认的关联存储库
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 学说时出现错误:schema:update --dump-sql
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'acme.cc_forum_category' already exists.
我可以理解,因为 CCDNSForum 的 Category 实体和我的 Acme Category 实体使用的是同一个表(C_Forum_Category 表)。
我的问题是:我做得对吗?没有更简单的方法可以在供应商存储库中添加自定义功能吗?
谢谢!