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
- 2152 reads