Ho l’esigenza di creare un filtro per un campo data di un modello.Dopo aver letto un pò di materiale in giro ho realizzato l’implementazione della function search() del modello così:
$criteria->compare('nomeCli',$this->nomeCli,true);
$criteria->compare('cognomeCli',$this->cognomeCli,true);
//http://www.yiiframework.com/forum/index.php/topic/22378-date-compare-in-cdbcriteria-solved/
//$now = new CDbExpression("NOW()");
if($this->date_INIZIO != '') {
$date = DateTime::createFromFormat('d-m-Y', $this->date_INIZIO);
$criteria->addCondition('date >= "' . $date->format('Y-m-d') . '"');
}
if($this->date_FINE != '') {
$date = DateTime::createFromFormat('d-m-Y', $this->date_FINE);
$date->add(new DateInterval('P1D')); //aggiunge 1 giorno
$criteria->addCondition('date < "' . $date->format('Y-m-d') . '"');
}
print_r($criteria);
l’ultima riga il print_r mi mostra l’oggetto in cui posso vedere che ha costruito correttamente la condizione pari a:
(date >= "2012-06-06") AND (date < "2012-06-07")
tale filtro mi restituisce su Yii un solo record,
ma se la eseguo direttamente su db ottengo 2 record.
Il che sembrerebbe un bug di Yii o mio.
Qualcuno ha qualche idea consiglio suggerimento aiuto da darmi?