CakePHP父/子协会:同时创建记录的困惑?

时间:2013-07-09 10:17:29

标签: php cakephp cakephp-appmodel

我会尽力解释我的情况,希望有足够的人帮助我:

我目前有一个'请求'模型。这包括一个Web表单和一个控制器,它根据表单上的用户选择保存一个或多个记录(例如,如果他们在多选框中进行一系列选择,则会生成并保存多个记录)。

这样可以正常工作,但我希望将所有这些“请求”组合在一起以便于参考,因为它们是相关的。我创建了一个名为“群组”的新模型。在我的“请求”模型中,我说:

var $belongsTo = array('Group' => array('className' => 'Group', 'foreignKey' => 'group_id'));

并在'requests'数据库表中创建了group_id列。

在“群组”控制器中,我放了

var $hasMany = array('Requests' => array('className' => 'Request'));

现在,在我的“请求”控制器中,我执行表单输入的所有处理并创建记录,我尝试使用

创建一个新的“组”
$this->Request->Group->create();

这样做,并且“组”数据库记录(以及适当的“请求”),但“请求”记录中的“group_id”字段未正确设置。当我尝试手动执行此操作时,例如将其设置为$this->Request->data['Group']['id']$this->Request->Group->id,CakePHP告诉我此值为NULL。所以我无法知道这些协会是否有效。

显然我做错了 - 我是否必须将所有创建和保存逻辑从我的'请求'控制器移动到我的'组'控制器?这似乎是一种痛苦。从“儿童”的控制者那里立刻创建一个“父母”和一堆“儿童”是否有问题?

为了记录 - 我正在使用CakePHP 1.1,遗憾的是无法升级。

1 个答案:

答案 0 :(得分:0)

尝试手动将“请求”记录中的“group_id”字段设置为$this->Request->Group->getLastInsertID();

应该为您提供最后创建的组的ID。