У Yii есть прозрачный способ (без написания sql) сделать это.Вы можете использовать области и методы отношений на модели для получения данных.
Преимущество этого способа состоит в том, что в отличие от findBySql, что вам нужно определять sql каждый раз, когда вы хотите что-то найти, вы можете использовать более одного разаобласти действия и отношения.
Итак, при условии, что у вас есть модель с именем Article и другая с именем Date, ваши модели будут отображаться как:
class Articles extends CActiveRecord {
…
public function relations() {
return array('date' => array(self::BELONGS_TO, 'Date', 'date_id'));
}
public function scopes() {
return array('validated' => array('condition' => 'validated_art=1'));
}
…
}
class Date extends CActiveRecord {
…
public function relations() {
return array('articles' => array(self::HAS_MANY, 'Article', 'date_id'));
}
public function scopes() {
return array('byDate' => array('order' => 'date_dat'),
'validated' => array('condition' => 'date_dat < 2011-xx-xx'));
}
…
}
И ваша находка покажет лайки:
$model = Date::model()->validated()->byDate()->findAll();
foreach($model->articles as $k => $article) {
echo $article->title;
}
Приведенный выше код является лишь примером, иллюстрирующим правильный способ сделать это в Yii, надеюсь, это поможет вам.