CakePHP将关联表的主键保存为另一个表的外键
因此,我目前正在研究如何添加用户。添加电子邮件记录,然后使用自动递增的电子邮件id分配给用户表中的电子邮件_id,该id为从属idCakePHP将关联表的主键保存为另一个表的外键,php,mysql,cakephp,Php,Mysql,Cakephp,因此,我目前正在研究如何添加用户。添加电子邮件记录,然后使用自动递增的电子邮件id分配给用户表中的电子邮件_id,该id为从属id <?php echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']); echo $this->Form->control('Users.password', ['requ
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`
我都是从用户控制器上完成的
public function add()
{
if ($this->request->is('post')) {//specify we are getting PostData
$data = [
//'id' => '111',
'address' => $this->request->data['Emails']['address'],
'created' => Time::now(),
'last_modified' => Time::now(),
'last_contacted' => Time::now() ];
$emails = TableRegistry::get('Emails');
$email = $emails->newEntity($data, [ 'associated' => ['Users']]);
$save = $emails->save($email, ['associated' => 'Users']);
$email_id = $save->id;
$users = TableRegistry::get('Users');
$user = $users->newEntity($this->request->getData(), ['associated' => ['Emails.id']]);
$user->dob = date('Y-m-d', strtotime($user->dob));
$user->email['id'] = $email_id;
$user->is_admin = 'n';
$user->last_login = Time::now();
$user->created = Time::now();
$user->last_modified = Time::now();
if ($emails->save($email, ['associated' => 'Users'])) {
if($users->save($user, ['associated' => 'Emails'])) {
$this->Flash->success(__('The user has been saved.'));
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error(__('User could not be saved. Please, try again.'));
}
}else {
$this->Flash->error(__('Email save failure, please try again.'));
}
}
$emails = $this->Users->Emails->find('list', ['limit' => 200]);
$this->set(compact('user', 'emails'));
$this->set('_serialize', ['user']);
}
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`
它从以下表单中获取数据:
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`
`表单->创建()?>
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`
我似乎无法接受用户的输入并将其添加到表中。错误包括:
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`
无法封送“电子邮件”关联的数据。它与“Users”无关,当我只将hasone放在UsersTable中时,就会出现这种情况。如果我只在EmailsTable里有它也一样
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`
错误1452:无法添加或更新子行:外键约束失败,当两者都有一行且我先发送电子邮件时会发生此情况。它仍然说没有fk关系您使用的是哪个CakePHP版本?CakePHP版本3.4现在没有时间回答。。。我建议你先读一读储蓄/编组协会是如何运作的,你在那里做的事情是没有必要的,而且里面充满了陷阱:|。谢谢。是的,读了很久了。它只是不想保存。
<?php
echo $this->Form->control('Emails.address', ['required' => true, 'label' => 'Email']);
echo $this->Form->control('Users.password', ['required' => true, 'label' => 'Password']);
echo $this->Form->label('Gender');
echo $this->Form->radio('Users.gender',['m'=>'Male', 'f' => 'Female'] , [ 'required' => true]);
echo $this->Form->control('Users.family_name', [ 'required' => true, 'label' => 'Given Name']);
echo $this->Form->control('Users.given_name', [ 'required' => true, 'label' => 'Family Name']);
echo $this->Form->control('Users.dob', [ //birth date between 1900 and current year
'data-format'=>'d m Y',
'class' => 'dateinput',
'required' => true,
'data-default-date'=> '03-30-1993',
'maxYear' => date('Y') - 17,
]);
echo $this->Form->control('Users.phone', [ 'required' => true]);
?>
</fieldset>
<?= $this->Form->button(__('Submit'), ['class'=>'text-right']) ?>
<?= $this->Form->end() ?>`