Symfony Web サイトで CCDNForum の ForumBundle を使用しています (バンドル自体は関係ありません。質問はこのバンドルに具体的には関係ありませんが、より一般的です)。それをカスタマイズしたいので、当然、親がCCDNForumForumBundle。私が変更したい唯一のことは、Category エンティティに関連付けられた CategoryRepository に新しいカスタム関数を追加することです。
そこで、AcmeForumBundle に CategoryRepository.php を作成し、CCDNForum の CategoryRepository.php を拡張しましたが、Category エンティティのデフォルトのリポジトリが CCDNForum の CategoryRepository であるため、これでは不十分です。
次に行ったのは、CCDNForum の Category エンティティを拡張する新しい AcmeForumBundle 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
{
}
SQL エラー "acme_category" テーブルが見つからないため、@ORM\Table 行を追加しました。エンティティで何も変更する必要がないため、クラスはもちろん空です。
このコードを使用すると、すべて正常に動作し、CategoryRepository にカスタム関数を問題なく追加しましたが、データベース スキーマを更新するときに問題が発生します。php app/console doctrine:schema:update --dump-sql を実行するとエラーが発生します
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'acme.cc_forum_category' already exists.
これは、CCDNForum のカテゴリ エンティティと私の Acme カテゴリ エンティティが同じテーブル (C_Forum_Category テーブル) を使用しているため、理解できます。
私の質問は次のとおりです。私はこれをすべて正しく行っていますか? カスタム関数をベンダー リポジトリに追加する簡単な方法はありませんか?
ありがとう!