我有两张桌子(A和B)彼此没有关系。 (我猜他们的关系将是一个产品ID,它在另一个表中(表C)??)A和B都有一个来自和迄今。我不希望用户在这两个表格中提交重叠日期。因此,如果表A的日期为3/1到6/1,则表B在这两个日期或重叠日期之间不应该有任何关系。有没有办法在验证中检查这个?
我有类似的东西,但它只是每次提交,而我正在寻找那个错误。
public function tableADateExists($attribute, $params)
{
$criteria = new CDbCriteria;
$a = new tableA();
$criteria->compare('product_id',$this->main_pid,true,'OR');
$criteria->compare('product_id',$this->target_pid,true,'OR');
//product_id in table A
$criteria->addBetweenCondition('start_date', $this->effective_from_date, $this->effective_to_date, 'OR');
$criteria->addBetweenCondition('end_date', $this->effective_from_date, $this->effective_to_date);
//start_date and end_date in table A, the other in table B
$model = $a->exists($criteria);
if (!empty($model)) {
$this->addError($attribute, "Item already exists in period.");
return false;
}
}