对于noob问题感到抱歉,但我不明白为什么它没有返回我期待的东西。基本上,它只是想查看用户的开始和结束是否在每个id存在的日期之间,不是吗?
public function date_range($attribute, $params)
{
$model= Table::model();
$criteria = new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->addCondition('start_date < '.$this->start_date);
$criteria->addCondition('end_date > '.$this->end_date);
$record = $model->findAll($criteria);
if($record==true)
$this->addError('id', 'Item already exists within range.');
}
答案 0 :(得分:0)
您可以将此功能的内容放在beforeValidate()
等更好的位置,然后返回错误。
public function beforeValidate()
{
$criteria = new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->addCondition('start_date < '.$this->start_date);
$criteria->addCondition('end_date > '.$this->end_date);
$record = Table::model()->exist($criteria); // I checked for existance
if(!empty($record)) // if there are records
{
$this->addError('id', 'Item already exists within range.');
return false;
}
return parent::beforeValidate();//don't forget this line
}