2012-01-19 122 views
2

我确定有一个非常简单的解决方案,但解释复杂,请耐心等待。从相关模型保存ID保存

我有一个注册表格Registration::add()它由三部分组成。

  1. 第一个是Registration数据的一些字段。
  2. 二是从三个相关HABTM车型,RoleCategoryCategoryChild
  3. 三是在User

Registration模型创建的每个记录有user_id复选框,我需要保存生成的User.id成领域。

我敢肯定,我应该能够使用模型关系来做到这一点,因为User模型保存了User.registration_id的罚款,但它似乎没有写入Registration模型。

我是否需要在我的add.ctp视图中创建另一个字段,以便该字段存在于$this->data->request阵列中?我宁愿这样做,也不愿意与beforeSave()afterSave()陷入困境。

所以我只需要创建

$this->Form->input('Registration.user_id', array('type'=>'hidden')); 

我的关系,仅供参考,

Registration hasOne User 
Registration hasAndBelongsToMany Category 
Registration hasAndBelongsToMany CategoryChild 
Registration hasAndBelongsToMany Role 
User hasOne Registration 

我目前使用saveAll($this->request->data)救我的所有数据,它的管理,以节省一切,除了Registration.user_id

+0

你的关系指定'Registration hasOne User',但你同时拥有'Registration.user_id'和'User.registration_id',所以有些东西看起来不正确 – icc97

+0

你是指一对一的关系吗? –

+0

@ icc97你是对的,我一直在这么久,我完全错过了它。这将解释为什么我的身份证没有更新两次!如果你可以把它作为答案,我会标记为已接受。 –

回答

0

你的关系有

Registration hasOne User 

然而,你同时拥有Registration.user_idUser.registration_id这意味着你需要hasAndBelongsToMany关系。

以防万一您不使用Cake Baker来生成模型,它是非常有用的。

0

是的,像这样的事情应该按照你的问题工作:

 

<?php echo $form->input('Registration.user_id',array('type'=>'hidden', 'value' => $user_id)); ?> 
 

希望它可以帮助