2011-11-14 30 views
2

我想通過使用比較運算符來限制顯示在gridview中的項目的結果。yii CGridView和比較運算符

喜歡的東西:

$model->dateEnd >= date("Y-m-d"); 

是否有東西,我可以在控制器做這樣做呢?還是必須在模型的搜索方法中完成?

回答

0

您可以通過添加條件向數據提供者過濾顯示在您的CGridView中的結果。例如:

$dataProvider=new CActiveDataProvider('Post', array(
    'criteria'=>array(
    'condition'=>'dateEnd >= NOW()', 
), 
    'pagination'=>array(
    'pageSize'=>20, 
), 
)); 

CActiveDataProvider文檔有更多信息。

+0

John Watson我目前已將其過濾爲搜索方法,但只是想知道是否可以將其移入我的控制器。我想我可以將dp添加到控制器,如果這是需要的?如果不在控制器中使用比較運算符,它就像$ model-> dateEnd = date(「Y-m-d」)一樣簡單;所以我想知道這樣的事情是否也適用於比較操作員? – enfield

+0

我認爲它應該在你的控制器中。你目前在哪裏?風景? –

+0

因爲它是適合特定模型(帶有dateEnd字段)的過濾器,但在許多視圖和控制器(與該模型進行交互或與之相關的任何視圖或控制器)中很有用,所以模型「命名範圍」實現不會使更多感? – hobs

0

您可以設置將與類似的語法來你問一個「參數命名的範圍」:

$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; 
} 
+0

你可以像下面這樣組合多個參數化的命名範圍:'$ models-> after('2011-11-11') - > before('2011-12-31')' – hobs