Doctrine_Pager birden GroupBy sütun yanlış sonuçlar döndürüyor

0 Cevap php

Ben veritabanı olarak mySQL ile Doktrin sorgu kurulum var:

  $q = Doctrine_Query::create();
    $q->select('make.id, make.make, 
    model.id, model.year, model.model')
      ->from('Make make')
      ->innerJoin('make.Models model');     
    $q->groupBy('make.id, model.id');    // <-- this is where the problem
    $q->orderBy('make ASC');
    $q->setHydrationMode(Doctrine_Core::HYDRATE_SCALAR);
    $pager = new Doctrine_Pager($q, 1, 1);  // just want one result to prove the concept
    $items = $pager->execute();

Bu (mysql günlüğünden) bu üç sorguları yürütür:

SELECT COUNT (*) num_results İTİBAREN (m SEÇ. id make m {INNER JOIN [ {[(1 BY (5)]} m2 m ON. id = m2. make_id GRUP )]}. id, m2. id) dctrn_count_query

SEÇ FARKLı m3. id make m3 IC model m4 {ON JOIN [(0)]}. id = m3 BY m4. make_id GRUP. id, {[ m3 BY (5)]}. id SİPARİŞ. make ASC LIMIT 1

SEC m. id AS m__id, m. make m__make, {AS [(6)]}. id AS m2__id, m2. year}, {[([(11)] {AS 6)]}. model]) {[(4}]) 14 ([{AS} m IC {artır [(13)]} {[(6)] } {ON [(0)]}. id = m2. make_id NEREDE m. id IN m. {[BY ('33 ') grubu ile m. id, m2. id SİPARİŞ (4)]} ASC

Ve sonuç kümesidir

    array
        0 => 
            array
              'make_id' => string '33' (length=2)
              'make_make' => string 'Alfa-romeo' (length=10)
              'model_id' => string '288' (length=3)
              'model_year' => string '2010' (length=4)
              'model_model' => string '159' (length=3)
        1 => 
            array
              'make_id' => string '33' (length=2)
              'make_make' => string 'Alfa-romeo' (length=10)
              'model_id' => string '289' (length=3)
              'model_year' => string '2010' (length=4)
              'model_model' => string 'MiTo' (length=4)
        2 => 
            array
              'make_id' => string '33' (length=2)
              'make_make' => string 'Alfa-romeo' (length=10)
              'model_id' => string '290' (length=3)
              'model_year' => string '2010' (length=4)
              'model_model' => string '159 SPORTWAGON' (length=14)

Sorun (3 model var Alfa-Romeo) 1 marka seçmek için üçüncü sorguda kullanılan make.id döndüren ikinci sorguda olduğunu. Ne istediğiniz marka / model kombinasyonları SAYISI döndürmektir.

Ben 2 Doctrine_Pager iade öğe sayısını değiştirmek seçilirse iki Alfa-Romeo 3 model var ve yanında Audi () 30 modelleri var yapar çünkü, ben (33 satır olsun.

Nerede hata yapıyorum?

0 Cevap