CakePHP 2.验证模型至少包含它的一个关联


CakePHP 2.x: Validate model contains at least one of its associations

大家好,这可能听起来很傻,但我不明白解决这种情况的最佳方法是什么:

我有一个模型POST,它与另一个名为FILE的模型相关联。一个帖子有很多文件,一个文件属于一个帖子。问题是,我想在创建的那一刻有效,每个POST包含至少一个文件。

到目前为止,我在POST的beforeSave方法中尝试了这个:

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['File'])) {
            if (count($this->data[$this->alias]['File']) == 0) {
                $this->invalidate('File', "Postmust include at least one file.", false);
                return false;
            }
        }
        return true;
    } 

不幸的是它不起作用。任何帮助都是感激的。谢谢。

如果文件被发送了,那么文件的数量大于等于1,如果文件没有被发送,那么在你的条件下它可能返回false。

我建议这样做:

public function beforeSave($options = array()) {
    if (empty($this->data[$this->alias]['id'])) {
                if (count($this->data[$this->alias]['File']) == 0) {
                    $this->invalidate('File', "Postmust include at least one file.", false);
                    return false;
                }
            }
        return parent::beforeSave($options);
    }

这将在您创建id尚未保存的新记录时起作用。我希望这对你有帮助。