在cakephp中未验证主键字段的唯一性

在cakephp中未验证主键字段的唯一性,php,mysql,cakephp,Php,Mysql,Cakephp,我正在cakephp框架上工作,mysql是后端。我正在开发表单以输入产品详细信息,其中产品id将手动添加。我已经编写了产品id字段的验证规则。它适用于其他验证规则,即不为空,数值。但不适用于唯一验证规则。以下是我在模型中的验证代码: var $validate= array(product_id=> 'numeric'=> array('rule'=>'numeric',

我正在cakephp框架上工作,mysql是后端。我正在开发表单以输入产品详细信息,其中产品id将手动添加。我已经编写了产品id字段的验证规则。它适用于其他验证规则,即不为空,数值。但不适用于唯一验证规则。以下是我在模型中的验证代码:

var $validate= array(product_id=>
                                  'numeric'=> array('rule'=>'numeric',
                  'on'=>'create',
                  'message'=>'Please enter only numbers'),
                                  'isUnique' => array('rule' => 'isUnique',
                        message' => 'This product_id already exist'),

                 'notEmpty'=> array('rule' => 'notEmpty',
                        message' => 'Please enter the product id')),

            'product_name' => array('notEmpty'=> array(
                                    'rule' => 'notEmpty',
                                    'message' => 'Please enter the product name')));
我无法指出错误的位置

不应该是:

var $validate= array('product_id'=> array('rule'=>'numeric',
                    'on'=>'create',
                     //etc
否则您将尝试验证名为
numeric
的字段

另外,虽然我不知道你的应用程序是如何运行的,但使用
product_id
听起来似乎应该与
products
表中的另一条记录相关,该记录将自动处理,即在选择中

如果您正在输入一个唯一的代码(例如内部引用号),请考虑将字段重命名为更小的蛋糕,以防止可能出现的问题,或者与另一个蛋糕开发者混淆。

不应该是:

var $validate= array('product_id'=> array('rule'=>'numeric',
                    'on'=>'create',
                     //etc
否则您将尝试验证名为
numeric
的字段

另外,虽然我不知道你的应用程序是如何运行的,但使用
product_id
听起来似乎应该与
products
表中的另一条记录相关,该记录将自动处理,即在选择中


如果您输入一个唯一的代码(例如内部引用号),请考虑将字段重命名为更小的蛋糕,以防止可能出现的任何问题,或者与另一个蛋糕开发人员混淆。

看起来您的数组格式已经完全搞错了。尝试设置一点格式,然后计算开始括号和结束括号。除了我的帖子之外,任何真正的主键都已经是唯一的,并且是自动递增的-所以这应该不是必需的。看起来你的数组格式完全搞砸了。尝试设置一点格式,然后计算开始括号和结束括号。除了我的帖子之外,任何真正的主键都已经是唯一的,并且是自动递增的-所以这应该不是必需的。谢谢,你说得对。那是复制、粘贴错误。我在复制时错过了产品id。仍然无法验证唯一性?请在另一个字段上尝试,看看是否有效。我的猜测仍然是,您试图在本质上应该是唯一的东西上验证
isUnique
,所以可能Cake忽略了它。数据类型是什么?数据类型是整数,我尝试删除isUnique验证规则,然后上一条记录被覆盖。注意:谢谢,你说得对。那是复制、粘贴错误。我在复制时错过了产品id。仍然无法验证唯一性?请在另一个字段上尝试,看看是否有效。我的猜测仍然是,您试图在本质上应该是唯一的东西上验证
isUnique
,所以可能Cake忽略了它。数据类型是什么?数据类型是整数,我尝试删除isUnique验证规则,然后上一条记录被覆盖。