Doktrin 1.2 oluşturulan alana göre sipariş

0 Cevap php

Ben bir "sanal alan" eklemek için bir preDqlSelect () geri arama kullanıyorum. Ben bu modeli sorgulayabilir zaman yeni alan ile sipariş çünkü arama kovulacak Ama önce benim sorgu doğrulama gerçekleşiyor gerekir.

İşte benim geri bulunuyor:

class Artist extends BaseArtist
{
    public function preDqlSelect(Doctrine_Event $event)
    {

        // Add title field (concatenation of first_name, last_name, and company fields)
        $params = $event->getParams();
        $q = $event->getQuery();
        $a = $params['alias'];
        if (
        $q->contains($a.'.first_name')
        && $q->contains($a.'.last_name')
        && $q->contains($a.'.company')
        ) {
            $exists = '!ISNULL(NULLIF('.$a.'.%s, \'\'))';
            $value = 'IFNULL('.$a.'.%1$s, \'\')';
            $if = sprintf($exists, 'first_name').' OR '.sprintf($exists, 'last_name');
            $thenPiece1 = sprintf($value, 'first_name').', \' \', '.sprintf($value, 'last_name');
            $thenPiece2 = 'IF('.sprintf($exists, 'company').', CONCAT(\' (\', '.sprintf($value, 'company').', \')\'), \'\')';
            $then = 'TRIM(CONCAT('.$thenPiece1.', '.$thenPiece2 .'))';
            $else = sprintf($value, 'company');
            $select = 'IF('.$if.', '.$then.', '.$else.') AS title';
            $q->addSelect($select);
        }
    }
// ...

Ve burada benim sorgu var:

$artists = Doctrine_Query::create()
    ->select('a.id, a.first_name, a.last_name, a.company')
    ->from('Artist a')
    ->innerJoin('a.Products p')
    ->where('a.active <> 0')
    ->andWhere('p.active <> 0')
    ->orderBy('a.title')
    ->execute();

İşte ben alıyorum hata var:

Ölümcül hata: iletisiyle yakalanmamış istisna 'Doctrine_Query_Exception' / [ÇIKARILDI] / lib / doktrin / Doktrini / Sorgu / Orderby.php 'Bilinmeyen sütun başlığı': 94 Stack trace: # 0 / [ÇIKARILDI] / lib / doktrin / Doktrini / Sorgu / Abstract.php (2077): Doctrine_Query_Orderby-> parse ('a.title') # 1 / [ÇIKARILDI] / lib / doktrin / Doktrini / Query.php (1160): Doctrine_Query_Abstract-> _processDqlQueryPart ('orderby', Array ) # 2 / [ÇIKARILDI] / lib / doktrin / Doktrini / Query.php (1126): Doctrine_Query-> buildSqlQuery (false) # 3 / [ÇIKARILDI] / lib / doktrin / Doktrini / Sorgu / Abstract.php (1137): Doctrine_Query-> getSqlQuery (Array, false) # 4 / [ÇIKARILDI] / lib / doktrin / Doktrini / Sorgu / Abstract.php (1106): Doctrine_Query_Abstract-> _getDqlCallbackComponents (Array) # 5 / [ÇIKARILDI] / lib / doktrin / Doktrini / Sorgu / Abstract.php (1001): Doctrine_Query_Abstract-> _preQuery (Array) hat 94 üzerinde / [ÇIKARILDI] / lib / doktrin / Doktrini / Sorgu / Orderby.php içerisinde 6 / srv / web / museumfounda

0 Cevap