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

vawmfj5a  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我在处理一个yii1.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

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

kulphzqa

kulphzqa1#

不应在中使用属性值 rules() 方法,因为它是在设置属性之前调用的:
呼叫 rules() 获取验证程序配置。
设置属性。
运行验证。
您应该使用现有的扩展(例如)来验证复合密钥,或者为此编写自己的验证器(这并不难,通常内联验证器需要5-10行代码)。

相关问题