मैं इस तरह एक InvoiceItem इकाई मिल गया है के साथ विदेशी कुंजी लौटें * यूनिट मूल्य।DQL क्वेरी
मैं इस तरह एक DQL क्वेरी के साथ योग लौट सकते हैं:
SELECT SUM(I.qty * I.unitPrice) AS amount FROM Entities\\InvoiceItem I
WHERE I.invoice IN (..) GROUP BY I.invoice
परिणाम:
array(
0 => array('amount' => '46.7'),
1 => array('amount' => '32.5')
)
लेकिन मैं चालान विदेशी कुंजी वापस जाने के लिए कैसे पता नहीं है। मैं
SELECT SUM(I.qty * I.unitPrice) AS amount, I.invoice
FROM Entities\\InvoiceItem I
WHERE I.invoice IN (..) GROUP BY I.invoice
की कोशिश की है लेकिन यह काम नहीं करता है (त्रुटि:। अमान्य PathExpression एक StateFieldPathExpression होना चाहिए।)
मैं चालान आईडी कैसे लौट सकते हैं? और मैं अपने परिणाम सरणी के कुंजी के रूप में आईडी का उपयोग करना चाहते हैं:
array(
1005 => '46.7',
1250 => '32.5'
)
जहां 1005 और 1250 चालान की आईडी है।
अद्यतन 2011-06-15
मूल निवासी क्वेरी काम करता है:
$rsm = new \Doctrine\ORM\Query\ResultSetMapping();
$rsm->addScalarResult('invoice_id', 'invoiceId');
$rsm->addScalarResult('amount', 'amount');
$q = $this->getEntityManager()->createNativeQuery(
'SELECT invoice_id, SUM(qty * unit_price) AS amount FROM invoices_items'
.' WHERE invoice_id IN ('.implode(',', $ids).') GROUP BY invoice_id',
$rsm
);
$result = $q->getResult();
परिणाम:
array(
0 =>
array(
'invoiceId' => '1005',
'amount' => '46.7'
)
1 =>
array(
'invoiceId' => '1250',
'amount' => '32.5'
)
)
लेकिन मैं चालान आईडी के आधार पर सूचकांक करने के लिए एक पाश बनाने की जरूरत है ।
जहाँ तक मुझे पता है, तुम सिर्फ परिणाम फिर उन्हें एक नई सरणी बनाने आपका चालान आईडी के रूप में कार्य करने के लिए के माध्यम से लूप अर्जित करने होंगे सरणी कुंजी –
HINT_INCLUDE_META_COLUMNS काम करता है, लेकिन मुझे कम से कम एक फ़ील्ड को शामिल करने की आवश्यकता है: SELECT SUM (I.qty * I.unitPrice) AS राशि, भाग I। {Id} ... – Maxence
सच है, मुझे नहीं लगता कि वैसे भी है उसके चारों ओर –