Php yii CGridView&;比较运算符

Php yii CGridView&;比较运算符,php,yii,Php,Yii,我想通过使用比较运算符来限制gridview中显示的项目的结果 比如: $model->dateEnd >= date("Y-m-d"); 控制器中是否有我可以执行的操作?还是必须在模型的搜索方法中完成 您可以通过向数据提供程序添加条件来过滤在CGridView中显示的结果。例如: $dataProvider=new CActiveDataProvider('Post', array( 'criteria'=>array( 'condition'=>'dat

我想通过使用比较运算符来限制gridview中显示的项目的结果

比如:

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

控制器中是否有我可以执行的操作?还是必须在模型的搜索方法中完成

您可以通过向数据提供程序添加条件来过滤在CGridView中显示的结果。例如:

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

文档有更多信息。

您可以通过向数据提供程序添加条件来过滤在CGridView中显示的结果。例如:

$dataProvider=new CActiveDataProvider('Post', array(
  'criteria'=>array(
    'condition'=>'dateEnd >= NOW()',
  ),
  'pagination'=>array(
    'pageSize'=>20,
  ),
));
文档中有更多信息。

您可以设置一个“参数化命名范围”,该范围将与您要求的语法类似:

$models->after($date);
显示了如何在模型中实现命名作用域,如下所示:

public function after($date='2011-11-11')
{
    $this->getDbCriteria()->mergeWith(array(
        'condition'=>'dateEnd >=  :endDate',
        'params'   => array(":endDate"=>"%$date%")
        ));
    return $this;
}
您可以设置一个“参数化命名范围”,该范围将与您要求的语法类似:

$models->after($date);
显示了如何在模型中实现命名作用域,如下所示:

public function after($date='2011-11-11')
{
    $this->getDbCriteria()->mergeWith(array(
        'condition'=>'dateEnd >=  :endDate',
        'params'   => array(":endDate"=>"%$date%")
        ));
    return $this;
}

约翰·沃森:我目前在搜索方法中对它进行了过滤,但我想知道是否可以将它移动到我的控制器中。我想我可以将dp添加到控制器中,若这是需要的话?如果不在控制器中使用比较运算符,则其操作非常简单,如$model->dateEnd=date(“Y-m-d”);所以我想知道类似的东西是否也适用于比较运算符?我想它应该在您的控制器中。你现在在哪里?视图?因为它是一个适用于特定模型(带有dateEnd字段)的过滤器,但在许多视图和控制器(与该模型交互或关联的任何视图或控制器)中都很有用,所以模型“命名范围”不是吗实现更有意义吗?John Watson我目前在搜索方法中对其进行了过滤,但我只是想知道是否可以将其移动到我的控制器中。我想我可以将dp添加到控制器中,若这是需要的话?如果不在控制器中使用比较运算符,则其操作非常简单,如$model->dateEnd=date(“Y-m-d”);所以我想知道类似的东西是否也适用于比较运算符?我想它应该在您的控制器中。你现在在哪里?视图?因为它是一个适用于特定模型(带有dateEnd字段)的过滤器,但在许多视图和控制器(与该模型交互或关联的任何视图或控制器)中都很有用,所以模型“命名范围”实现不是更有意义吗?并且您可以像这样组合多个参数化命名范围:
$models->after('2011-11-11')->before('2011-12-31')
,您可以像这样组合多个参数化命名范围:
$models->after('2011-11-11')->before('2011-12-31')