doctrine Выбрать сущности только родительского класса(select Parent::class), выбрать по дискриминатору (discr) - NOT INSTANCE OF
Primary tabs
Задача
При использовании SingleTable необходимо сделать выборку сущностей ТОЛЬКО родительского класса, исключая все наследуемые.
Решение
Можно, добавив в запрос условие NOT INSTANCE OF:
$result = $this->getEntityManager() ->createQueryBuilder() ->select('u') ->from(User::class, 'u') ->where('u NOT INSTANCE OF '.Manager::class);
В данном случае класс Manager унаследован от User, но хранится с ним в одной таблице (см. SingleTable):
/** * @ORM\Entity * @ORM\Table(name="`user`") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({ * "user" = "App\Entity\User", * "manager" = "App\Entity\Manager", * }) */ class User { //...
Источник
- Log in to post comments
- 1666 reads