我想通過使用比較運算符來限制顯示在gridview中的項目的結果。yii CGridView和比較運算符
喜歡的東西:
$model->dateEnd >= date("Y-m-d");
是否有東西,我可以在控制器做這樣做呢?還是必須在模型的搜索方法中完成?
我想通過使用比較運算符來限制顯示在gridview中的項目的結果。yii CGridView和比較運算符
喜歡的東西:
$model->dateEnd >= date("Y-m-d");
是否有東西,我可以在控制器做這樣做呢?還是必須在模型的搜索方法中完成?
您可以通過添加條件向數據提供者過濾顯示在您的CGridView中的結果。例如:
$dataProvider=new CActiveDataProvider('Post', array(
'criteria'=>array(
'condition'=>'dateEnd >= NOW()',
),
'pagination'=>array(
'pageSize'=>20,
),
));
CActiveDataProvider文檔有更多信息。
您可以設置將與類似的語法來你問一個「參數命名的範圍」:
$models->after($date);
的Yii Guide展示瞭如何實現你的模型像這樣的命名範圍:
public function after($date='2011-11-11')
{
$this->getDbCriteria()->mergeWith(array(
'condition'=>'dateEnd >= :endDate',
'params' => array(":endDate"=>"%$date%")
));
return $this;
}
你可以像下面這樣組合多個參數化的命名範圍:'$ models-> after('2011-11-11') - > before('2011-12-31')' – hobs
John Watson我目前已將其過濾爲搜索方法,但只是想知道是否可以將其移入我的控制器。我想我可以將dp添加到控制器,如果這是需要的?如果不在控制器中使用比較運算符,它就像$ model-> dateEnd = date(「Y-m-d」)一樣簡單;所以我想知道這樣的事情是否也適用於比較操作員? – enfield
我認爲它應該在你的控制器中。你目前在哪裏?風景? –
因爲它是適合特定模型(帶有dateEnd字段)的過濾器,但在許多視圖和控制器(與該模型進行交互或與之相關的任何視圖或控制器)中很有用,所以模型「命名範圍」實現不會使更多感? – hobs