zf2 \Zend\Db\Sql\Sql utilizzando predicato nella condizione where

non ho davvero capito come utilizzare i predicati in zend framework 2.

questo è quello che ho ottenuto:

$sql->select()
        ->columns(array('GroupedColum'
            ,'minValue' => new Expression('min(ValueColumn)')))
        ->from('ValueTable')
        ->group('GroupedColum')
        ->order('minValue')
        ->order('GroupedColum')
        ->limit(10);

questo sta lavorando bene

ora voglio applicare qualcosa di simile:

$predicate = new Zend\Db\Sql\Predicate\Predicate();
$sql->where($predicate->greaterThan('filterColumn','20);

questo è quello che ho provato, non genera nessun errore, ma non funziona 🙁

Questo è quello che mi aspetto come SQL:

select GroupedColum
    , min(ValueColumn) as minValue
from ValueTable
where filterColumn > 20
group by GroupedColum
order by minValue
    GroupedColum
limit 10;
si dovrebbe aggiungere la tua soluzione come risposta.
fatto, grazie per i consigli!

OriginaleL’autore RomanKonz | 2012-09-26

2 Replies
  1. 9

    Ho risolto il problema con la visualizzazione del codice sorgente di zf2

    Se sai come farlo, è davvero facile, il codice di cui sopra è stato quasi subito!

    Invece di

    $predicate = new Zend\Db\Sql\Predicate\Predicate();

    è necessario utilizzare

    $predicate = new  \Zend\Db\Sql\Where();

    è un vuoto classe derivata, che è utilizzato in Zend\Db\Sql\Sql

    questo è il lavoro completo, esempio:

    $sql->select()
        ->columns(array('GroupedColum'
            ,'minValue' => new Expression('min(ValueColumn)')))
        ->from('ValueTable')
        ->group('GroupedColum')
        ->order('minValue')
        ->order('GroupedColum')
        ->limit(10);
    $predicate = new  \Zend\Db\Sql\Where();
    $sql->where($predicate->greaterThan('filterColumn','20'));

    OriginaleL’autore RomanKonz

  2. 6

    Un po ‘ in ritardo, ma si può realizzare anche questo facendo

    $sql->select()
    ->columns(array('GroupedColum'
        ,'minValue' => new Expression('min(ValueColumn)')))
    ->from('ValueTable')
    ->group('GroupedColum')
    ->order('minValue')
    ->order('GroupedColum')
    ->limit(10)
    ->where
        ->greaterThan('filterColumn', '20');

    __Ottenere la magia metodo di \Zend\Db\Sql\Select è un caso per cui che restituisce l’attuale in cui (a) predicato, che permette di fare cose più complesse come

    $sql->where
        ->greaterThan('filterColumn', '20')
        ->or
        ->greaterThan('filterColumn', '30');

    vs

    $predicate = new  \Zend\Db\Sql\Where();
    $sql->where($predicate->greaterThan('filterColumn', '20'));
    $sql->where($predicate->greaterThan('filterColumn', '30'), 'OR');

    Per un elenco di tutti i predicati disponibile in ZF 2 (2.1.0) il Cui predicato vedere:

    Aggiornamento alla versione di riferimento, si nota che ZF2 ha cambiato in modo significativo dal momento di questo intervento.

    OriginaleL’autore fyrye

Lascia un commento