同时创建两个HABTM关联记录

时间:2014-03-02 22:30:25

标签: cakephp model save associations has-and-belongs-to-many

在CakePHP应用程序中,我们假设我有两个模型:团队和用户。这些模型在HABTM关系中相互关联(由表teams_users加入)。

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

同时创建这些记录的最简洁,最直接的方法是什么?彼此之间有关联?

命名表单字段和控制器中的处理有什么“陷阱”?

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

1 个答案:

答案 0 :(得分:0)

假设所有关联和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;
}