Расширение пользователя SonataAdmin с помощью поля ManyToMany

В настоящее время я пытаюсь расширить Пользователь SonataUserBundle, чтобы добавить новые отношения ManyToMany с существующей сущностью.

Я расширил пользователя на основе ответа, найденного здесь - Расширение пакета пользователей Sonata и добавление новых полей.

User.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

Первое, что я заметил при синхронизации схемы, это то, что она создает 2 сводные таблицы вместо одной: pledge_user а также user_pledge, Я пытался добавить @ORM\JoinTable в, но это просто меняет имя одного. Когда я добавляю то же самое @ORM\JoinTable к обоим я получаю ошибку "таблица уже существует".

Когда я пытаюсь получить доступ к списку пользователей в админ, я получаю большую ошибку 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

1 ответ

Я знал, что это была ошибка дерпи. я имел

 * @ORM\ManyToMany(targetEntity="Foo\UserBundle\Entity\User", inversedBy="pledgedOn")

а также

 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", inversedBy="pledgedUsers")

Один из них должен был быть mappedBy вместо inversedBy, Изменение второго на

 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", mappedBy="pledgedUsers")

исправил проблему.

Другие вопросы по тегам