Свойство DQL Access для свойства в Query Builder (Doctrine)

У меня есть следующий запрос, который я собираю вместе.

$lineItems      = $em->createQueryBuilder()->select('invitems.unitprice,invitems.quantity,invitems.tax,invitems.scrapetax')
->from('AppBundle:InvoiceLineItems', 'invitems')
->leftJoin('invitems.invoiceId','inv') //StoreID is present in the invoice so only need to leftjoin here
->leftJoin('inv.storeId','si')
->where('inv.companyId = :companyId')
->andWhere('si.id = :storeId')
->andWhere('inv.created BETWEEN :startdate AND :enddate')
->andWhere("inv.status = 'sent' or inv.status = 'paid'  or inv.status = 'partial' ")
->setParameter('startdate', $startDate)
->setParameter('enddate', $endDate)
->setParameter('companyId',$companyid)
->setParameter('storeId',$store['id'])
->getQuery()
->getResult();

Запрос выполняется без сбоев, но он не работает, так как я знаю, что у меня есть записи в базе данных, принадлежащие хранилищу для накладной. В настоящее время он возвращает 0 записей. Я подтвердил, что $ store [‘id’] дает правильный идентификатор, так что это не глупая ошибка. Удаление этой строки и ее ссылки на параметр в противном случае возвращает строки.

Проблема в этой линии, ->leftJoin('inv.storeId','si')

Могу ли я оставить соединение на имущество, которое пришло от другого соединения? Причина, по которой мне нужно это сделать, заключается в том, что элементы строки не имеют ссылки на storeID, а только счет-фактура.

Я не могу найти в документации ничего об этой теме, в частности.

Я попробовал это также без какого-либо успеха.

->andWhere('inv.storeId = :storeId')

По сути, я пытаюсь сделать следующее:

InvoiceLineItems имеет ссылку на Счет-фактура. Счет имеет ссылку на хранить

Я пытаюсь получить доступ к счет-фактура объект (который работает в настоящее время), но затем доступ к хранить объект что объект счета-фактуры содержит.

1

Решение

Я нашел ответ на свой вопрос

$lineItems      = $em->createQueryBuilder()->select('invitems.unitprice,invitems.quantity,invitems.tax,invitems.scrapetax')
->from('AppBundle:InvoiceLineItems', 'invitems')
->leftJoin('invitems.invoiceId','inv') //@JA - StoreID is present in the invoice, only need to leftjoin in this case
->where('inv.companyId = :companyId')
->andWhere('inv.storeId = :storeId')
->andWhere('inv.created BETWEEN :startdate AND :enddate')
->andWhere("inv.status = 'sent' or inv.status = 'paid'  or inv.status = 'partial' ")
->setParameter('startdate', $startDate)
->setParameter('enddate', $endDate)
->setParameter('companyId',$companyid)
->setParameter('storeId',$store["id"])
->getQuery()
->getResult();

Оказывается, код inv.storeId работает. Это лучше, чем пытаться покинуть Join в моем случае. Хотя на мой вопрос нет технического ответа, это было решением моей проблемы. Мне по-прежнему любопытно, можно ли покинуть Join на свойстве, на котором вы уже оставили Joined?

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector