2013-10-08 5 views
0

Я хочу подсчитать количество строк, чье возвращение из запроса DQL, как я это делаю? вот мой DQL запрос:Как подсчитать количество строк, возвращаемых DQL-запросом?

$items=$em->createQuery("select i.unitPrice,i.quantity,i.linetotal,i.description from InvoicesInvoicesBundle:Invoiceshasitems i where i.invoiceid='".$id."'"); 
$itemdata=$items->getResult(); 
+1

вы хотите показать серийный номер вдоль результата? как 1,2,3 .. или просто общее количество записей как 34 65 и т. д. без каких-либо других данных? – Tauseef

+0

Использовать счетчик http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html –

ответ

1

Использование Count()

$items=$em->createQuery("select COUNT(i.unitPrice) 
         from InvoicesInvoicesBundle:Invoiceshasitems i 
          where i.invoiceid='".$id."'"); 
    $itemdata=$items->getResult(); 

http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html

вы должны закладки ссылку выше, если вы регулярно работаете на DQL.

+0

Я использовал ваш код, но это показывает ошибку, подобную этой [Синтаксическая ошибка], строка 0, col 24: Ошибка: ожидается Doctrine \ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESIS, got ',' –

+0

попробуйте обновленный запрос. может быть ур дБ позволяет только один столбец в счете, использовать столбец, всегда имеют значение, и я думаю, что цена единицы является правильным – Tauseef

1

Попробуйте этот код

$qbTotal = $this->em->createQueryBuilder(); 
$qbTotal->select('count(i)') 
      ->from('InvoicesInvoicesBundle:Invoiceshasitems', 'i') 
      ->where('i.invoiceid = :id') 
      ->setParameter('id', $id) 
      ; 

$qeuryTotal = $qbTotal->getQuery(); 
$totalItems = $qeuryTotal->getSingleScalarResult(); 
+0

я использовал свой код, но он дает ошибку неопределенное свойство –

0

Ну, @Praveesh есть ответ, хотя есть небольшая опечатка в нем. Должен быть: id вместо? Id.

Но эта связь заработала мне 680 повторений, поэтому я уверен, что это правильно: Count Rows in Doctrine QueryBuilder

+0

хехе счастливый удар - другие упорно работают их представители :-) 680 и подсчет ... но, честно говоря, я наткнулся на ваш ответ и поддержал его несколько месяцев назад. Привет – nifr

Смежные вопросы