2011-11-14 32 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