2013-06-23 4 views
3

в моем классе репозитория У меня есть это, но запрос не работает.Совокупный СУММ с Doctrine2 и QueryBuilder

public function getResultsByName($page, $resultsCount, array $request_arr){  
$qb = $this->createQueryBuilder('xx'); 
$qb->addSelect('SUM(xx.quantity) as total') 
    ->leftJoin('xx.reception', 'x') 
    ->addSelect('x') 
    ->leftJoin('x.purchase', 'p') 
    ->addSelect('p') 
    ->leftJoin('p.provider', 'pr') 
    ->addSelect('pr') 
    ->where('pr.id = :company_id') 
    ->setParameter('company_id', $request_arr['company_id']); 

$query = $qb->getQuery(); 

return parent::getPaginator($query, $page, $resultsCount); } 

Ошибка появляется в моем шаблоне веточку это важный кусок этого

{% for result in results %} 
<tr> 
    <td>{{result.reception.id}}</td> 
    <td>{{result.reception.date|date('d-m-Y')}}</td> 
    <td>{{result.reception.purchase.id}}</td> 
    <td>{{result.reception.purchase.provider.name|upper}} [{{result.reception.purchase.provider.id}}]</td> 
    <td>{{result.purchaseProduct.name |upper}} [{{result.purchaseProduct.productCode |upper}}]</td> 
    <td>{{result.purchasePrice}}</td> 
    <td>{{result.quantity}}</td> 
    <td></td> 
    <td>{{result.quantityStock}}</td> 
</tr> 
{% endfor %} 
+0

Что значит, что он не работает? Какая у вас ошибка? – Hast

+0

Ошибка появляется в шаблоне TWIG, это EROR: Item " продажа " для " массива " не существует в " AgroMyEntityManagerBundle: MyEntityManager: Продажа/SaleProductSaleList.html.twig " в строке 14, посмотрите Abov я добавил свой шаблон код – jsf

+0

Это не из-за суммы. Вы пытаетесь получить доступ к свойству 'result.sale', которое не существует. – Hast

ответ

3

, как у вас есть два выбирает по вашему запросу, ваш результирующий объект является массивом такого рода:

array(
    'total' => $total, 
    'xx' => array(
     'reception' => $reception, 
     'quantityStock' => $quantityStock, 
     [...] 
    ) 
); 

чтобы получить доступ к недвижимости в веточке, вы должны получить доступ к нему так:

{{result.xx.reception}} 
{{result.total}} 
+0

, даже добавляя xx в мой цикл, как это {% для результата в результатах%} {{result.xx.quantity}}. .. {% endfor%} не работает. Я получаю такую ​​же ошибку. – jsf

+0

Я отредактировал свой ответ, «количество» псевдонимов «total» в вашем SUM, другие свойства как «прием» должны быть доступны из {{result.xx.reception}} –

+0

К сожалению, ни количество, ни другие свойства (прием), это может быть что-то еще не так. – jsf