CakePHP 2.x使用外键保存多个模型

时间:2014-04-11 17:17:26

标签: php mysql forms cakephp foreign-keys

我目前正在构建一个多步骤表单提交网站,该网站涉及单个表单,该表单经过几个步骤并由多个用户(不同时)更新。例如,学生填写并提交表格,该表格可能会发送给需要填写相同表格的字段的教授,然后将其发送到办公室等。

我有一个特定的表单允许用户上传一个文件,需要将其保存到数据库中自己的表中,表单表中的引用列需要指向它。表单和文件都需要指向一个共同的超级父母;我的表看起来像这样:

核心(超级父):form_type,form_stage,date_created,core_id(主键)

表单:form_id(主键),各种表单字段,core_id(外键 - >核心[core_id]),file_id(外键 - >文件[file_id])

文件:file_id(主键),文件字段,core_id(外键 - >核心[core_id])

当表单进入上传文件的阶段时,核心和表单元组已经存在于数据库中各自的表中,其形式为[core_id] - >核心[core_id]正确。在下一阶段提交表格时,我需要表格[file_id] - >文件[file_id]和文件[core_id] - >芯[CORE_ID]。

我不知道该怎么做。我认为这是

的内容
//$this->request->data looks something like data['Core'] -> ['File'], ['Form']
//So Core is an array of arrays where File is an array of file variables,
//Form is an array of Form variable, and Core also has it's own Core variables.
//File[file_id] is NOT set as this attribute is incremented by the database.
//Core[core_id] and Form[core_id] are BOTH set since these rows already exist,
//and so File[core_id] can be set before hand too.


$this->Core->create();
$this->Core->Form->create();
$this->Core->File->create();

$this->Core->saveAssociated($this->request->data, array('validate' => 'first', 'deep' => true));

这是在正确的轨道上吗?这是否正确更新Form中指向File的外键和File中指向Core的外键? (如果我没有那么明显,文件和表格需要指向同一个核心)

我的表单模型有:

$belongsTo = array('Core', 'File');

档案有:

$belongsTo = 'Core';
$hasOne = 'Form';

核心有:

$hasOne = array('Form', 'File');

编辑:

所以,我继续实施这个想法,但现在我有三个问题:

1)表单按预期更新Form行,但也创建一个带有新id的新空行。我不想要这个新行。

2)Form [file_id]外键未更新,它保持为空。

3)我的表单没有正确验证,这意味着如果我尝试提交一个缺少字段的表单,它只是尝试提交表单而不显示验证错误(所有验证规则都设置为'required'和'rule '='notEmpty')

0 个答案:

没有答案