2013-12-06 2 views
1

Я пытаюсь подсчитать, сколько раз Department спрашивать Concern.Yii (Query Builder) Как петля, чтобы получить все значения столбца

РЕДАКТИРОВАТЬ: В настоящее время, когда я cVardump, запрос выводит НЕВЕРНОЙ результата. Но я запускаю запрос в phpmyadmin, он выводит правильный результат.

Когда я реализую вместе с циклом, он не работает. Он выводит только один Concern, где база данных содержит 2 Concern.

Я не знаю, но я думаю, что это в моей петле foreach. Любая помощь будет оценена.

$query = $datacon->createCommand() 

    ->select('COUNT(a.dept_id) as countDept,dept_name, concern') 
    ->from('transaction a') 
    ->join('department b' , 'a.dept_id = b.dept_id') 
    ->group('dept_name', 'concern') 
    // ->limit(10) 
    ->queryAll(); 

    ob_end_clean(); 

/*CVarDumper::dump($query,15,true); 
exit;*/ 



$html2 = '<h2 align="center"><small>FAQ (Sorted per Issue)</small></h2> 

     <table border="1" cellspacing="0" cellpadding="4"> 

     <tr> 
      <th align="center">Issue</th> 
      <th align="center">Department</th> 
      <th align="center">No. of times asked</th> 
     </tr>'; 

     $count = 0; 

    foreach ($query as $row) 
     { 
      $issue = $row['concern']; 
      $dept_name = $row['dept_name']; 
      $countDept = $row['countDept']; 



    $html2 .= ' 
     <tr> 
      <td>'.$issue.'</td> 
      <td>'.$dept_name.'</td> 
      <td align="center">'.$countDept.'</td> 

     </tr>'; 
     } 

    $html2 .= '</table> '; 

    $pdf->writeHTML($html2, true, false, true, false, ''); 

EDIT: Результат VarDump

array 
(
    0 => array 
    (
     'countDept' => '2' 
     'dept_name' => 'Dialysis' 
     'concern' => 'DSFSDFSDFSAFSAF' 
    ) 
    1 => array 
    (
     'countDept' => '4' 
     'dept_name' => 'Nurse Ward' 
     'concern' => 'DSFSDFSDFSAFSAF' 
    ) 
) 
+0

Share Результаты vardump? – user2486495

+0

Конечно, я отредактирую свой пост. – banana

+0

Попробуйте ввести код? – user2486495

ответ

0

Я думаю, вам нужно только группе dept_name.

+0

Я пробовал это, и выход все тот же. – banana

0

Попробуйте это,

foreach ($query as $row) 
{ 
     foreach ($row as $r) 
     { 
      $issue = $r['concern']; 
      $dept_name = $r['dept_name']; 
      $countDept = $r['countDept']; 
      $html2 .= ' 
      <tr><td>'.$issue.'</td> 
      <td>'.$dept_name.'</td> 
      <td align="center">'.$countDept.'</td></tr>'; 
     } 
} 

ИЛИ

foreach ($query as $row) 
{ 
     foreach ($row as $r) 
     { 
      $html2 .= '<tr><td>'.$r['concern'].'</td> 
      <td>'.$r['dept_name'].'</td> 
      <td align="center">'.$r['countDept'].'</td></tr>'; 
     } 
} 

ИЛИ

foreach ($query as $row) 
    { 
      for($i=0;$i<count($row);$i++) 
      { 
       $d=$row[$i]; 
       $html2 .= '<tr><td>'.$d['concern'].'</td> 
       <td>'.$d['dept_name'].'</td> 
       <td align="center">'.$d['countDept'].'</td></tr>'; 
      } 
    } 
+0

Я пробовал оба, но он выводит ошибку, говоря «Недопустимое смещение строки». – banana

+0

Попробуйте третий вариант, и если не удалось обменять мне вывод $ d, echo vardump ($ d); – user2486495

+0

Это ошибка: «Использование неопределенной константы i - предполагается« i ». И когда я vardump возвращает массив, он выводит ту же ошибку. – banana

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