2016-03-24 17 views
1

Düz bir dizide döndürülen doktrinden veriye katılmaya çalışıyorum. Bu, farklı yöntemler kullanarak mümkündür, ancak sütun adlarıma önceden eklenmiş tablo diğer adlarını veya sütun adlarıma eklenmiş bir dizin kullanmaya devam ediyorum. Örnekler izleyin:Doctrine önek veya sonek olmadan dizi olsun

Benim sorgu (kullanarak sorgu oluşturucu):

array(12) { 
    ["gl_GROUP_LVL_ID"]=> 
    int(4) 
    ["gl_PARENT_LVL_ID"]=> 
    int(0) 
    ["gl_DESCRIPTION"]=> 
    string(18) "Second description" 
    ["gl_MAINCAT_ID"]=> 
    int(2) 
    ["gl_USER_GROUP_ID"]=> 
    int(7) 
    ["gl_IMAGE_ID"]=> 
    int(6) 
    ["gl_ORPHAN_GROUP"]=> 
    int(0) 
    ["gl_ANIMATION_ID"]=> 
    int(-1) 
    ["gl_SEQUENCE_NO"]=> 
    int(6) 
    ["gl_IMAGINE_ID_DESCRIPTION"]=> 
    string(25) "GROUP_LEVEL_DESCRIPTION_6" 
    ["MAINCAT"]=> 
    string(1) "F" 
    ["IMAGE_NAME"]=> 
    string(12) "some pic.png" 
} 

Sorun tablo diğer adı istemiyorum "gl_:

$qb->select('gl, m.MAINCAT, i.IMAGE_NAME') 
    ->from('Entities\GroupLevel', 'gl') 
    ->join('Entities\Maincat', 'm', Expr\Join::WITH, 'gl.MAINCAT_ID = m') 
    ->innerJoin('Entities\Image', 'i', Expr\Join::WITH, 'gl.IMAGE_ID = i') 
    ->where('gl.USER_GROUP_ID = 7 AND gl.MAINCAT_ID = 2'); 
$query = $qb->getQuery(); 

benim çıkış şuna benzer $query->getResult(AbstractQuery::HYDRATE_SCALAR) kullanma "eklenmiş. Bazı okumalardan sonra kendi özel hidratörlerinizi yazmanın mümkün olduğunu gördüm. Ben de hidratörü şu şekilde yaptım.

class HydrateScalarCustom extends AbstractHydrator 
{ 
    protected function hydrateAllData() 
    { 
     return $this->_stmt->fetchAll(\PDO::FETCH_ASSOC); 
    } 
} 

Ancak, ben \PDO::FETCH_ASSOC kullanmak rağmen böyle bir 0 tabanlı indeksi sütunları soneklerinin:

array(12) { 
    ["GROUP_LVL_ID_0"]=> 
    string(1) "4" 
    ["PARENT_LVL_ID_1"]=> 
    string(1) "0" 
    ["DESCRIPTION_2"]=> 
    string(18) "Second description" 
    ["MAINCAT_ID_3"]=> 
    string(1) "2" 
    ["USER_GROUP_ID_4"]=> 
    string(1) "7" 
    ["IMAGE_ID_5"]=> 
    string(1) "6" 
    ["ORPHAN_GROUP_6"]=> 
    string(1) "0" 
    ["ANIMATION_ID_7"]=> 
    string(2) "-1" 
    ["SEQUENCE_NO_8"]=> 
    string(1) "6" 
    ["IMAGINE_ID_DESCRIPTION_9"]=> 
    string(25) "GROUP_LEVEL_DESCRIPTION_6" 
    ["MAINCAT_10"]=> 
    string(1) "F" 
    ["IMAGE_NAME_11"]=> 
    string(12) "some pic.png" 
} 

Eğer bir fikrin varsa bana bildirin. PDO ile, sütun adlarınız benzersiz değilse, dizini sütun adlarınıza ekleyebilir. Ancak, tüm sütunlar benzersizdir. İade edilen veriler üzerinde yineleme yapmak ve önekleri/sonekleri çıkarmak istemiyorum, doğru şekilde döndürülmesini istiyorum.

Şimdiden teşekkürler.

cevap

0

İdeal olmamasına rağmen geçici bir çözüm buldum. $query->getResult(AbstractQuery::HYDRATE_SCALAR)'u kullanarak ve $qb->select('m.MAINCAT, i.IMAGE_NAME, gl.GROUP_LVL_ID, gl.PARENT_LVL_ID ... ') grup düzeyleri tablosundan her bir sütunu belirtmek, önek olmadan sütunları döndürür. İdeal olarak, getirilecek her bir sütunu belirtmem gerekmeyecek.