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