在CakePHP应用程序中,让我们假设我有两个模型:Team和User。这些模型在HABTM关系中相互关联(由表team_users加入)。同时创建两个HABTM关联记录
假设我们有一个表单,某人可以同时指定详细信息以创建新的团队和用户。
什么是最简洁,最直接的方式来同时创建这些记录,并且彼此之间存在关联?
什么是命名表单域以及在Controller中处理的“陷阱”?
我想用最友好的方式做到这一点,这样我就可以在两种模型上都返回验证错误。
在CakePHP应用程序中,让我们假设我有两个模型:Team和User。这些模型在HABTM关系中相互关联(由表team_users加入)。同时创建两个HABTM关联记录
假设我们有一个表单,某人可以同时指定详细信息以创建新的团队和用户。
什么是最简洁,最直接的方式来同时创建这些记录,并且彼此之间存在关联?
什么是命名表单域以及在Controller中处理的“陷阱”?
我想用最友好的方式做到这一点,这样我就可以在两种模型上都返回验证错误。
这种方法会进入您的团队模型,假设所有assocs和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()应该保存两个记录,但我认为它不会创建连接表记录。无论如何,saveAll()在过去是一个婊子。我不知道为什么你看到只有一个错误,与更多模型非常相似的代码适合我。 – burzum
你有什么试过的?你应该能够以正确的方式格式化数据,保存所有数据,然后完成。 – Dave
并让它自动创建加入HABTM表记录来关联两个记录? –
我这么认为。不是100%肯定,但.. – Dave