我想通过使用比较运算符来限制显示在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