表格结构
id, chart_id, date, rate
Datapoint belongsTo Chart
我试图在chart_id,date上制作一个唯一的索引验证规则。我尝试使用插件MultiColumnUniqueness进行验证,但它总是返回true。
编辑:这不是问题所在。这对于检查多列唯一性是有效的。见下文。 使用MultiColumnUniqueness进行模型验证:
public $actsAs = array('MultiColumnUniqueness.MultiColumnUniqueness' => array(
'fields' => array('chart_id', 'date'),
'errMsg' => "This date for this chart has already been used."
));
有没有办法在CakePHP中验证带有日期的多列唯一索引?
编辑:我的数据数组是以下结构:
array(
'Datapoint' => array(
(int) 0 => array(
'id' => '1055',
'date' => array(
'month' => '12',
'year' => '2012',
'day' => '01'
),
'active' => '1',
'num' => '15',
'days' => '897',
'chart_id' => '4'
),
(int) 1 => array(
'id' => '1054',
'date' => array(
'month' => '12',
'year' => '2012',
'day' => '01'
),
'active' => '1',
'num' => '4',
'days' => '768',
'chart_id' => '4'
)
);
解决:WalkingRed的解决方案与我正在使用的插件一样有效,但问题并非如此。在尝试使用$ this-> Chart-> validates()保存saveAssociated之前,我试图验证。事实证明,如果您只是验证,则需要通过不同的方法验证多行:
if ($this->Chart->saveAssociated($this->request->data, array('validate' => 'only'))) {
// validates
} else{
$errors = $this->Chart->invalidFields(); //validation error
}
答案 0 :(得分:0)
你在模特中添加了类似的东西吗?
public $validate = array(
'chart_id' => array(
'unique_first_last' => array(
'rule' => array('checkMultiColumnUnique', array('chart_id', 'date'), false)
'message' => 'Chart and date must be unique.'
)
),
;)
public function checkMultiColumnUnique($ignoredData, $fields, $or = true) {
return $this->isUnique($fields, $or);
}