Yii有一个透明的方式(无需编写sql)来做到这一点。您可以在模型上使用范围和关系方法来获取数据。
这种方式的好处是,与findBySql不同的是,每次需要查找某个内容时都需要定义一个sql,因此可以使用多次范围和关系。
所以假设你有一个模型叫条和另一个叫日期,你的模型将显示像:
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做正确的方法,我希望对你有所帮助。
你有一个名叫“dat”的关系吗? 1:n关系将返回一个数组。尝试在这里更改搜索元素的名称。 – ldg
“更改搜索元素的名称”是什么意思? – Pietro
如果您的关系试图返回一个名为“dat”的值,并且您在上述查询中定义了一个名为“dat”的值,则可能会有冲突。 – ldg