Cakephp 同时创建两个HABTM关联记录

Cakephp 同时创建两个HABTM关联记录,cakephp,model,save,associations,has-and-belongs-to-many,Cakephp,Model,Save,Associations,Has And Belongs To Many,在CakePHP应用程序中,假设我有两个模型:团队和用户。这些模型在HABTM关系中相互关联,并由表用户连接 假设我们有一个表单,其中有人可以指定详细信息,同时创建一个新团队和用户 同时创建这些记录并相互关联的最干净、最直接的方法是什么 在控制器中命名表单字段和处理的要诀是什么 我希望以最友好的方式执行此操作,以便能够返回两个模型上的验证错误。假设所有ASSOC和HABTM设置正确,此方法将进入您的团队模型 public function createTeam($postData) {

在CakePHP应用程序中,假设我有两个模型:团队和用户。这些模型在HABTM关系中相互关联,并由表用户连接

假设我们有一个表单,其中有人可以指定详细信息,同时创建一个新团队和用户

同时创建这些记录并相互关联的最干净、最直接的方法是什么

在控制器中命名表单字段和处理的要诀是什么


我希望以最友好的方式执行此操作,以便能够返回两个模型上的验证错误。

假设所有ASSOC和HABTM设置正确,此方法将进入您的团队模型

public function createTeam($postData) {
    $this->set($postData);
    $this->User->set($postData);
    $validTeam = $this->validates();
    $validUser = $this->User->validates()

    if ($validTeam && $validUser) {
        $this->create();
        $this->save($postData, array('validate' => false);
        $this->User->create();
        $this->User->save($postData, array('validate' => false);
        $this->TeamsUser->create();
        $this->TeamsUser->save(array(
            'TeamsUser' => array(
                'user_id' => $this->getLastInsertId()
                'team_id' => $this->User->getLastInsertId()
            )
        ));
        return true;
    }
    return false;
}

我明白这是怎么回事了!Cake只是不能通过简单的saveAll或saveAssociated创建关联吗?需要额外的代码有点让人扫兴。希望3.0能够简化这类事情!我发现的问题是,在试图通过同一表单保存两个模型时,只会显示一个模型的字段验证错误……saveAll应该保存两个记录,但我认为它不会创建联接表记录。不管怎样,萨维尔过去是个婊子。我不知道为什么你只看到一个错误,非常相似的代码,甚至更多的模型对我来说都很好。啊,我会出错,一次一个模型,而不是一次全部出错。那很好。另外,两行validate=>false上缺少一些右括号,数组中缺少一个逗号。您也必须使用升华文字!:谢谢我在没有使用任何IDE的情况下写下了这一点,我使用的是通常启用phpcs支持的phpstorm。我已经更新了答案来解决你的问题,我自己忘记了。原因是您必须定义VAR,因为当第一个模型验证失败时,它不会运行第二个模型,这样您就不会得到第二个模型的错误。您尝试了什么?您应该能够以正确的方式格式化数据,saveAll和voila-done,并让它自动创建joinhabtm表记录来关联这两个记录?我想是的。不是100%确定,但是。。