現在、SonataUserBundle の User を拡張して、既存のエンティティとの新しい ManyToMany 関係を追加しようとしています。
ここにある回答に基づいてユーザーを拡張しました - Sonata User Bundle の拡張と新しいフィールドの追加
ユーザー.php
/**
* @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", inversedBy="pledgedUsers")
**/
private $pledgedOn;
// (...) generated getters and setters here
Pledge.php
/**
* @ORM\ManyToMany(targetEntity="Foo\UserBundle\Entity\User", inversedBy="pledgedOn")
**/
private $pledgedUsers;
// (...) generated getters and setters here
スキーマを同期して最初に気付いたのは、ピボット テーブルが 1 つではなく 2 つ作成されていることpledge_user
ですuser_pledge
。を追加しようとしました@ORM\JoinTable
が、それは 1 つの名前を変更するだけです。両方に同じものを追加すると@ORM\JoinTable
、「テーブルが既に存在します」というエラーが表示されます。
admin でユーザー リストにアクセスしようとすると、大きな SQL エラーが発生します。
An exception occurred while executing 'SELECT count(DISTINCT u0_.id) AS sclr0 FROM User u0_ LEFT JOIN fos_user_user_group f2_ ON u0_.id = f2_.user_id LEFT JOIN fos_user_group f1_ ON f1_.id = f2_.group_id':
SQLSTATE[42703]: Undefined column: 7 ERROR: column u0_.id does not exist
これは単純なことだと確信していますが、この問題の原因を見つけようと頭を悩ませています。私は何を取りこぼしたか?
完全な User.php: http://pastebin.com/TXunsgm1
完全な Pledge.php: http://pastebin.com/Mta6aiVm