我在使用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
,这也没有任何影响。