CakePHP同时保存所有多个关联模型

时间:2014-01-03 15:23:43

标签: php cakephp

我在使用saveAll时遇到了一些问题,不过我觉得我想做的事情是不可能的,但有兴趣看看人们的想法。

有问题的模型是

League
Team
User

关系如下:

LEAGUE 一个联盟可以有很多球队,但联盟由一个用户(管理员)拥有。

var $belongsTo = 'User';
var $hasMany = 'Team';

TEAM 每个团队可以在一个联盟中并由一个用户拥有。

var $belongsTo = array('User', 'League' => array('counterCache' => true));

用户 每个用户可以管理多个联赛,也有多个团队

var $hasMany = array('League', 'Team');

我有一个表单,用户可以创建一个新联盟,创建一个团队添加到联盟,并注册。回发给CakePHP的数据如下:

array(
    'League' => array(
        'name' => 'Valid League Name',
        'max_teams' => '10'
    ),
    'Team' => array(
        array(
            'name' => 'Valid Team Name'
        )
    ),
    'User' => array(
        'password' => 'password1',
        'firstname' => 'Firstname',
        'lastname' => 'Lastname',
        'email' => 'test@example.com',
        'confirm_password' => 'password1'
    )
);

现在假设这一切都通过验证,这是输入数据库的第一个数据,我希望从我正在使用的saveAll操作返回以下内容:

array(
    'League' => array(
        'id' => 1,
        'name' => 'Valid League Name',
        'max_teams' => '10',
        'user_id' => 1
    ),
    'Team' => array(
        array(
            'id' => 1,
            'name' => 'Valid Team Name',
            'league_id' => 1,
            'user_id' => 1
        )
    ),
    'User' => array(
        'id' => 1,
        'password' => 'password1',
        'firstname' => 'Firstname',
        'lastname' => 'Lastname',
        'email' => 'test@example.com',
        'confirm_password' => 'password1'
    )
);

然而,正在发生的事情是,user_id数组中的Team字段未填充,而只是作为null返回。我猜测的是,CakePHP无法确定刚刚创建的团队和用户是否必然相互关联,因此没有创建两者之间的关联。

目前,在正在进行保存的控制器内(我通过联盟模型$this->League->saveAll()进行保存)一旦保存完所有内容并重新启动团队,我手动获取user_id新的user_id。有什么我可以做的让Cake意识到这两个与saveAll函数相关联我做了我需要的一切吗?我尝试在启用saveAll()选项的情况下使用deep,这也没有任何影响。

0 个答案:

没有答案