Php Yii:尝试将“uniqe”规则与条件一起使用时出错

Php Yii:尝试将“uniqe”规则与条件一起使用时出错,php,mysql,yii,yii1.x,Php,Mysql,Yii,Yii1.x,我正在处理一个Yii 1.1x网站 我有一个模型,它有一个标题和一个类别id 我试图阻止用户在完全相同的类别中输入相同的标题。在不同类别中使用相同的标题是可以的 我尝试使用以下规则,但在同一类别中输入重复的标题进行测试时出错 public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return

我正在处理一个Yii 1.1x网站

我有一个模型,它有一个标题和一个类别id

我试图阻止用户在完全相同的类别中输入相同的标题。在不同类别中使用相同的标题是可以的

我尝试使用以下规则,但在同一类别中输入重复的标题进行测试时出错

public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('str_title, id_category', 'required'),
        array('str_title', 'unique', 'criteria'=>array(
            'condition'=>'`id_category`=:idcategory',
            'params'=>array(
                ':idcategory'=>$this->id_category
            )
        )),

    );
}
如前所述,当我尝试在同一类别中输入重复标题时,会收到以下错误消息:

CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined. The SQL statement executed was: SELECT 1 FROM `posts` `t` WHERE (`id_category`=:idcategory) AND (`t`.`str_title`=:ycp0) LIMIT 1

有人知道问题出在哪里吗?

您不应该在规则方法中使用属性值,因为它是在设置属性之前调用的:

调用规则以获取验证程序配置。 设置属性。 运行验证。
您应该使用现有的扩展来验证复合键,或者为此编写自己的验证器。这并不难,通常内联验证器需要5-10行代码。

尝试将条件更改为:idcategory'=>$this->id\u categorysorry。那是我问题中的一个错误。我的密码里没有。仍然不起作用