Intereting Posts
Как получить данные по $ _GET на php, когда я использовал .htaccess Проверьте, существует ли таблица базы данных с использованием PHP / PDO PHP формат даты mysql SOAP-ERROR: Разбор WSDL: не удалось загрузить из «XXX / check? Wsdl»: не удалось загрузить внешний объект «XXX / check? Wsdl» Вызов конструктора из аргументов переменной с помощью PHP В чем разница между PHP и требованием? Почему мое время () отключено на один час в php? Что такое временная метка Unix и зачем ее использовать? MySQL. Как добавить последовательные даты для многих существующих записей? Уменьшите качество изображения на лету и отобразите более качественную версию Как перебирать массив JSON с помощью вызова jQuery / AJAX из PHP? Разница строк php Странное поведение с числами, имеющими начальный нуль mysql_real_escape_string: достаточно ли для безопасности базы данных? CodeIgniter 3.0.3 ci_session не сохраняет данные сеанса в таблице ci_sesstion

Symfony 2 / Doctrine 2: два объекта для одной таблицы, используйте один в пользу другого

В моем приложении Symfony2 я извлек большую часть своих Entities в отдельную библиотеку, которую я устанавливаю с помощью композитора.

Эта библиотека не имеет зависимости от Symfony2 (но зависит от Doctrine, потому что я использую аннотации), потому что я хотел бы использовать ее и в других проектах, отличных от Symfony2.

Библиотека содержит объект ClientUser Entity, который сопоставляется с таблицей client_users . В моем приложении Symfony2 я хотел бы использовать тот же ClientUser Entity для аутентификации. Это требует от меня реализации Symfony\Component\Security\Core\User\UserInterface .

Проблема в том, что я хотел бы иметь как «Symfony2-agnostic», так и «Symfony-aware» реализацию объекта ClientUser Entity (который должен отображаться в одной таблице). Я попытался расширить оба класса из объекта ClientUserAbstract Entity, но это не сработало.

 <?php namespace My\Library\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\MappedSuperClass */ class ClientUserAbstract { // all my fields here } 

Мой «Symfony2-агностик» Сущность:

 <?php namespace My\Library\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity */ class ClientUser extends ClientUserAbstract { // nothing here, it's empty } 

Мой «Symfony2-aware» Entity:

 <?php namespace Vendor\Bundle\MyBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\UserInterface; /** * @ORM\Entity */ class ClientUser extends ClientUserAbstract implements UserInterface { // all methods that Symfony requires because of the UserInterface here: public function getRoles(); public function getPassword(); public function getSalt(); public function getUsername(); public function eraseCredentials(); } 

Приложение My Symfony 2 теперь обнаруживает два объекта, которые указывают на одну и ту же таблицу и не работают с Исключением. Я либо должен сказать моему приложению Symfony2 «игнорировать» мой My\Library\Entity\ClientUser , либо мне нужен способ его расширения. Есть идеи?

На всякий случай, если у кого-то еще есть эта проблема, вот мой комментарий, преобразованный в ответ:

Для данного менеджера сущностей это строго одно сущность для каждой таблицы. Вам нужно создать второй диспетчер объектов и использовать его для аутентификации.

Плюс, конечно, мне нравится получать повторений.