Yii CGridView和CDbCriteria中的默认值

时间:2014-07-15 15:24:11

标签: php mysql yii

我有简单的CGridView,它根本没有向我显示任何数据。

我已经记录了由CDbCriteria构建的查询,并且有一些使用mysql默认字段值的LIKE条件,因此MySQL在必填字段中搜索具有默认值的条目。

由于我没有匹配此condidion的条目,因此返回0行。但问题是,我不需要这些喜欢。有没有办法禁用它?

以下是观点:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        array(
            'name' => 'name',
            'type' => 'raw',
            'value' => 'CHtml::encode($data->name)'
        ),
        array(
            'name' => 'email',
            'type' => 'raw',
            'value' => 'CHtml::link(CHtml::encode($data->email), "mailto:".CHtml::encode($data->email))',
        ),
    ),
));

控制器:

public function actionUsers() {
            $model = new Users();
            $this->renderPartial('users',array(
                'model' => $model,
            ));
}

模型用户的功能搜索:

return new CActiveDataProvider(get_class($this), array(
        'criteria'=>$criteria,
                    'sort'=>array(
                        'defaultOrder'=>'user ASC',
                    ),
                    'pagination'=>array(
                            'pageSize'=>5
                    ),
));

记录查询:

SELECT * FROM `users` `t` WHERE (((((email LIKE :ycp0) AND (`group` LIKE :ycp1)) AND (gender LIKE :ycp2)) AND (city LIKE :ycp3)) AND (name LIKE :ycp4)) AND (av_url LIKE :ycp5) ORDER BY `t`.`name` LIMIT 5. Bound with :ycp0='%NotSet%', :ycp1='%3%', :ycp2='%Secret%', :ycp3='%NotSet%', :ycp4='%NotSet%', :ycp5='%noav.jpg%'

1 个答案:

答案 0 :(得分:1)

我是Stackoverflow的新手,并且没有足够的声誉发表评论,否则我会要求您分享有关如何在$ model-> search()函数中配置CDbCriteria对象的更多信息。 / p>

但是,我怀疑你在compare方法中使用了部分匹配,可以通过在false参数中传递$partialMatch来禁用,如下所示:

$criteria = new CDbCriteria;
$criteria->compare('email', $someValue, false);

或者,由于false是默认值,您可以简单地写:

$criteria->compare('email', $someValue);