0

所以也许我只是错过了一些东西。SaveAll 数据工作正常......如果我取出 beforeSave 或者无论保存什么都只返回 true。我要做的是检查 user_group_id/user_friend_id 的组合是否已经存在。如果不保存。

但是,如果您为一条记录返回 false,则似乎整个 saveAll 函数将退出运行。也许这是故意的?官方文档仅限于回答这个问题。

显然我可以将检查移至一个函数,但这似乎更好地涵盖了每个插入/更新。

function beforeSave($options) {
        //dont let any duplicates be saved
        $count = $this->find('count', array(
            'conditions' => array(
                'user_group_id' => $this->data['UserGroupFriend']['user_group_id'],
                'user_friend_id' => $this->data['UserGroupFriend']['user_friend_id'],
            )));
        if ($count)
            return false;
        else
            return true;
    }
4

2 回答 2

1

beforeSave()您可以检查$this->data无效值,如果发现,修改以$this->data删除它们。然后返回 true,只保存仍然存在的数据$this->data

于 2012-04-16T08:25:36.797 回答
0

一种侵入性较小(也许更可预测)的方法是让框架为您处理它。无需手动进行验证,只需让 Cake 为您完成即可。在您上创建自定义验证规则UserFriendGroup以验证这两个字段的唯一性,然后该saveAll()方法照常工作。这只是在正常验证执行期间要验证的其他内容。

因为您没有指定版本,所以我已经链接到 Cake 1.3 的自定义验证规则,但我确信 2.x 有一些非常相似的东西。

于 2012-04-16T11:27:40.240 回答