我在处理一个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
有人知道问题出在哪里吗?
1条答案
按热度按时间kulphzqa1#
不应在中使用属性值
rules()
方法,因为它是在设置属性之前调用的:呼叫
rules()
获取验证程序配置。设置属性。
运行验证。
您应该使用现有的扩展(例如)来验证复合密钥,或者为此编写自己的验证器(这并不难,通常内联验证器需要5-10行代码)。