Моя цель - наследовать уже унаследованную таблицу с помощью доктрины. У меня есть абстрактный класс пользователей ...Symfony2 наследует от унаследованной таблицы
<?php
namespace UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
/**
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"student" = "Student", "employee" = "Employee", "customer" = "Customer"})
*/
abstract class User extends BaseUser
{
}
... и различные подклассы (ученик, клиент, сотрудник). Нравится этот:
<?php
namespace UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* UserBundle\Entity\Student
*
* @ORM\Entity
*/
class Student extends User
{
}
Внутри этой установки все работает нормально. Теперь другие пакеты, рассматриваемые как отдельные модули, должны содержать столбцы из подклассов. Поэтому мне нравится наследовать от таких классов, как ученик. Но они не могут быть абстрактными, потому что они используются базовой системой.
Можно ли разрешить это с наследованием таблицы классов доктрины? А если нет, какое решение вы бы порекомендовали?
Thx для ответа @ francesco-panina. В моем szenario действительно пользователь не мог стать и (учеником, и сотрудником), и для _system bots_. Я использую интерфейс API API ... они независимы от любого пользователя (кроме ассоциированных владельцев). Мое окончательное решение для окончательного тезиса: я динамически добавляю дискриминатор в зависимости от текущего модуля и объединяю конкретного пользователя модуля вместе с используемым подклассом. Это работает ... уродливо ... как черт ... – binzram
Чтобы быть откровенным в большинстве случаев, я соглашаюсь с реальностью, и реализация, которую я выбираю, является наиболее рентабельной, которая, вдали от чистого и элегантного ... Если это сработает для вас, не стыдно выбирать какое-либо решение, пока это осознанный выбор. удачи! –