2016-04-06 41 views
1

ZF2'de COUNT (*) ifadesi içeren tablo ağ geçidiyle SQL sorgusu yürütmeye çalışıyorum. Sorgu basılırSELECT (COUNT (*)) sorgu ZF2'de

public function brKomentariUred(){ 
     $sql = $this->tableGateway->getSql(); 
     $select = $sql->select(); 
     $select->columns(array('brKomentari' => new \Zend\Db\Sql\Expression('count(komentarID)'), 'uredId' => 'ured')); 
     $select->group('ured'); 
     //echo $sql->getSqlStringForSqlObject($select); die(); 
     return $this->tableGateway->selectWith($select);  
    } 

ben bu kodun

foreach($this->getKomentarTable()->brKomentariUred() as $r){ 
       $arr = $this->object_to_array($r); 
       print_r($arr); 
      } 

ile sorgu aramaya çalışıyorum denetleyici olarak

SELECT count(komentarID) AS `brKomentari`, `komentar`.`ured` AS `uredId` FROM `komentar` GROUP BY `ured` 

doğrudur: Bu benim modelinde fonksiyonudur SELECT'te yazılan, ancak SELECT * FROM komentar olarak döndüren, ancak hiçbir değer içermeyen öğe ve aygıt sayısını döndürmez. Bu doğru kod mu yoksa kodumda hata mı yapıyorum? Diğer sorgular tamam.

Yardımlarınız için şimdiden teşekkür ederiz. Aşağıdaki adımları yapacağını Senin yerine

+0

"devicesID o SELECT yazıldığı gibi" - Sorgunuzda – RomanPerekhrest

+0

hiçbir 'devicesID' sütun var 'İddialı' demek istiyorum. 'Uyandım' tablomdaki sütundur. Elde sonucu bu Dizi ( [komentarID] => [referans noktası] => [sodrzina] => [edilsin] => [korisnik] => [inputfilter] => ) olduğu Dizi ( [komentarID] => [referans noktası] => [sodrzina] => [edilsin] => [korisnik] => [inputfilter] => ) dizi elemanları tümü InputFilter dışında, tablonun – Vasil

cevap

1

:

  • ben group by operatörü bir takma ad kullanmak ister new \Zend\Db\Sql\Expression('COUNT(komentarID)')
  • ile ifade nesnesi yerine, bu çalışmayabilir. Yani, Ayrıca $select->group('komentar.ured')

ile bu $select->group('ured') yerine, sonuç işleme basitleştirilmiş olmalıdır:

$resultSet = $this->getKomentarTable()->brKomentariUred(); 
print_r($resultSet->toArray()); 
+0

veritabanındaki sütunlarıdır. Bana yardımcı olmak için zaman ve çabalarınız için teşekkürler, Bunu takdir ediyorum. Değişiklikleri yaptım ama maalesef aynı sonuç. Sonuçta sadece iki sütun almayı bekliyorum. Bütün gün boyunca buna takıldım: @ – Vasil

+1

Çözümü buldum! Benim modelimde işlev tarafından döndürülen $ resultSet değiştirdim. değiştirdim $ this-> tableGateway-> selectWith ($ select); , $ sonuçSet = $ sql-> prepareStatementForSqlObject ($ select); return $ sonuçSet-> execute(); Ve işe yarıyor! Zaman ayırdığınız için tekrar teşekkür ederim. – Vasil