.: HosiriS :.

Informatica e non solo

Symfony: giochiamo con MySQL

Posted by hosiris su aprile 21, 2010

Avete imparato a modificare le rotte? Avete raggiunto un risultato che vi piace?
Oggi analizziamo come personalizzare le query, perchè? Nelle specifiche volevamo che venissero mostrate solo le attività da completare e di mostrarle in ordine descrescente di priorità.
L’ORM Propel ci mette a disposizione un quantità elevata di strumenti (qui una guida), vediamo subito come usarli.

Aprite il file apps/frontend/modules/todo/actions/actions.class.php, notate come il metodo executeIndex() faccia uso di una classe di nome Criteria(). Questa ci permette di definire le query da eseguire.
Chiudete il file e apriamo lib/model/TodoPeer.php, apportiamo la seguente modifica:


class TodoPeer extends BaseTodoPeer{
  static public function getActive(){
    $criteria = new Criteria(); //creiamo l'istanza
    $criteria->add(self::COMPLETED, 0, Criteria::EQUAL); // aggiungiamo la clausola che ci permette di selezionare solo le attività incomplete
    $criteria->addDescendingOrderByColumn(self::PRIORITY); // aggiungiamo la condizione di ordinamento discendente
    return self::doSelect($criteria);
  }
}

Poi modifichiamo l’azione in modo da fare riferimento alla nuova funzione definita nel modello:


// apps/frontend/modules/todo/actions/action.class.php
...
public function executeIndex(sfWebRequest $request){
  $this->todos = TodoPeer::getActive();
}

Ed ecco raggiunti i nostri scopi in pochi passi.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: