0
У меня есть эти объекты:Фатальная ошибка: Максимальный уровень вложенности функции от «100» достигла, прерывание
Invoice hasMany PlannedCharge
PlannedCharge hasMany PartialCharge
мне нужно знать, если счет-фактура полностью оплачена, как это делает следующий SQL:
SELECT
Invoice.id
FROM
webfactory_sale_invoices Invoice
AND
0 <>
((SELECT
SUM(PlannedCharge.ammount)
FROM
webfactory_sale_planned_charges PlannedCharge
WHERE
PlannedCharge.invoice_id = Invoice.id
GROUP BY Invoice.id) - IFNULL((SELECT
SUM(PartialCharge.ammount)
FROM
webfactory_sale_planned_charges PlannedCharge
INNER JOIN
webfactory_sale_partial_charges PartialCharge ON PlannedCharge.id = PartialCharge.planned_charge_id
WHERE
PlannedCharge.invoice_id = Invoice.id
GROUP BY Invoice.id), 0))
Теперь, переводя DQL через QueryBuilder с этим способом:
$qb->andWhere($qb->expr()->neq(0, $qb->expr()->diff(
$qb->select('SUM(PlannedCharge.ammount)')
->from('WebFactorySaleBundle:PlannedCharge', 'PlannedCharge')
->where("PlannedCharge.invoice = {$invoiceAlias}")
->groupBy($invoiceAlias)
,
$qb->select('SUM(PartialCharge.ammount)')
->from('WebFactorySaleBundle:PlannedCharge', 'PlannedCharge')
->innerJoin('WebFactorySaleBundle:PartialCharge', 'PartialCharge')
->where("PlannedCharge.invoice = {$invoiceAlias}")
->groupBy($invoiceAlias)
)
));
я получаю сообщение об ошибке: Fatal эр ror: Максимальный уровень вложенности функции «100» достигнут, прерывается!
Как я могу написать этот запрос?
Это мой путь тоже, но doctrine2 не поддерживают эту функцию. –
ах, sry. а не мой sql. Можете ли вы избавиться от участия в частичных и плановых сборах? Однако вы можете упростить его, это должно помочь. – Beth