我正在学习cakephp并且已经做了很多。我问这个问题的唯一原因是cakePHP中的文档可能是错误的。 我无法从这个问题的文档或过去的stackoverflow帖子看到为什么(子)教师表不会从(父)用户表中的id表中保存user_id。 我没有得到任何错误,但教师表中的user_id为0,因此它不会从User表中提取它。 我在两个模型上有一对一的关系。 我只是测试保存超过2个模型,我有一个用户和老师。我只需在表单中输入数据并创建一个新用户,也可以创建一个新老师,其中user_id是教师表中的外键。 我不愿问这个问题,因为这里有很多材料,但是我在跟随cakePHP中的文档之后无法看到我的问题。
http://book.cakephp.org/2.0/en/models/saving-your-data.html
public function addteacher() {
if ($this->request->is('post')) {
$this->User->create();
}
if (!empty($this->request->data)) {
// We can save the User data:
// it should be in $this->request->data['User']
$user = $this->User->save($this->request->data);
// If the user was saved, Now we add this information to the data
// and save the Profile.
if (!empty($user)) {
// The ID of the newly created user has been set
// as $this->User->id.
$this->request->data['teacher']['user_id'] = $this->User->id; //here is the problem
// Because our User hasOne Profile, we can access
// the Profile model through the User model:
if ($this->User->Teacher->save($this->request->data))
{
$this->Session->setFlash(__('Your post has been saved.'));
return $this->redirect(array('action' => 'login'));
}
}
}
}
<?php
echo $this->Form->create('User');
echo $this->Form->input('User.username');
echo $this->Form->input('User.password');
echo $this->Form->input('Teacher.firstname'); //text
echo $this->Form->input('Teacher.surname');
echo $this->Form->input('Teacher.address'); //text
echo $this->Form->input('Teacher.suburb');
echo $this->Form->input('Teacher.phone');
echo $ this-&gt; Form-&gt; end(&#39; Save Post&#39;); ?&GT;
答案 0 :(得分:0)
$this->request->data['teacher']['user_id'] = $this->User->id;
应该是
$this->request->data['Teacher']['user_id'] = $this->User->id;
。
Capital&#34; T&#34;。型号名称始终为CamelCased。
那说没有必要进行2次保存。你可以使用
$this->User->saveAll($this->request->data);
。
它将保存用户记录和教师记录,为教师记录添加正确的外键值(假设您已在用户和教师模型之间设置了正确的关联)。