BXVoral
@BXVoral
Веб-разработка

DQL. Как получить поле при join?

Разбираюсь с DQL
Есть три связанные сущности (маппинг описан в XML - если требуется приложу)
class Order
{
    private ?int $id = null;
}
class Guest
{
    public function __construct(public Order $order, public Person $person,  public OrderStatus $status)
    {
    }
}
class OrderStatus
{
    private ?int $id = null;
    private ?string $name = null;
}


Составляю запрос DQL (запрос в репозиторий Order)
$query = $this->createQueryBuilder('o')
    ->leftJoin(
        Guest::class,
        'g',
        \Doctrine\ORM\Query\Expr\Join::WITH,
        'o.id = g.order and g.person = :personId'
    )
    ->addSelect('IDENTITY(g.status) as status')  
    ->addSelect('o.id')
    ->setParameters([
        'personId' => 10
    ]);


Т.е. выборка необходима именно из заказов, но так же мне необходимо вытащить и поле status сущности Guest.

Если выполнить как приведено выше, то возвращается null в статус . Хотя в БД все заполнено.
Что необходимо еще сделать?

В принципе достаточно даже живьем вытащить status_id (поле из таблицы где храниться Guest) - или тут уже если я использую DQL то работать можно только с сущностями?
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
BXVoral
@BXVoral Автор вопроса
Веб-разработка
Необходимо было выполнить join для status. Только если рассматривать на уровне запроса SQL мне этот джоин не нужен - мне нужен только id. А он есть в таблице хранящей guest....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы