大家好,这可能听起来很傻但我不明白解决这个问题的最佳方法是什么:
我有一个模型POST,它与另一个名为FILE的模型相关联。一个帖子有多个文件,一个文件属于一个帖子。问题是我想在创建时确保每个POST至少包含一个FILE。
到目前为止,我在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;
}
不幸的是它没有用。任何帮助表示赞赏。感谢。
答案 0 :(得分:1)
如果文件已发送,则存在金额为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的新记录时,这将起作用。我希望这会有所帮助。