我正在使用Cakephp2.3
我有以下表格
表1:用户
这里我有字段group_id和其他字段
表2:
组
表3:学生
其中我有字段user_id
表4:监护人
我已经提交了user_id
还有student_guardians
我有字段guardian_id,student_id和relationship_id。
在其他表中我们有其他字段firstname,lastname等..
我用蛋糕烘焙来创建关联和
我想从学生/添加页面输入所有数据。像监护人一样(学生可以在单一表格上输入多个格式图片并提交他的详细信息)
我创建了一个视图,如下所示
<div class="guardianStudents form">
<?php echo $this->Form->create('GuardianStudent'); ?>
<fieldset>
<legend><?php echo __('Add Guardian Student'); ?></legend>
<?php
echo $this->Form->input('Student.first_name');
echo $this->Form->input('Guardian.0.Guardian.first_name');
echo $this->Form->input('Guardian.0.Guardian.last_name');
echo $this->Form->input('Guardian.0.User.username');
echo $this->Form->input('Guardian.0.User.password');
echo $this->Form->input('Guardian.0.User.group_id',array('type'=>'text','value'=>'1'));
echo $this->Form->input('Guardian.1.Guardian.last_name');
echo $this->Form->input('Guardian.1.Guardian.last_name');
echo $this->Form->input('Guardian.1.User.username');
echo $this->Form->input('Guardian.1.User.password');
echo $this->Form->input('Guardian.1.User.group_id',array('type'=>'text','value'=>'1'));
echo $this->Form->input('Student.User.group_id',array('type'=>'text','value'=>'1'));
echo $this->Form->input('Student.User.username');
echo $this->Form->input('Student.User.password');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
<div class="actions">
<h3><?php echo __('Actions'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('List Guardian Students'), array('action' => 'index')); ?></li>
<li><?php echo $this->Html->link(__('List Guardian Relationships'), array('controller' => 'guardian_relationships', 'action' => 'index')); ?> </li>
<li><?php echo $this->Html->link(__('New Guardian Relationship'), array('controller' => 'guardian_relationships', 'action' => 'add')); ?> </li>
<li><?php echo $this->Html->link(__('List Students'), array('controller' => 'students', 'action' => 'index')); ?> </li>
<li><?php echo $this->Html->link(__('New Students'), array('controller' => 'students', 'action' => 'add')); ?> </li>
<li><?php echo $this->Html->link(__('List Guardians'), array('controller' => 'guardians', 'action' => 'index')); ?> </li>
<li><?php echo $this->Html->link(__('New Guardian'), array('controller' => 'guardians', 'action' => 'add')); ?> </li>
</ul>
</div>
并且在控制器功能中添加
public function add() {
if ($this->request->is('post')) {
$this->GuardianStudent->create();
$this->loadModel('User');
if ($this->GuardianStudent->saveAll($this->request->data['Guardian'])) {
$this->Session->setFlash(__('The guardian student has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The guardian student could not be saved. Please, try again.'));
}
}
}
并且它不保存任何数据
以上代码已在student_guradians控制器中编写..
有没有人知道如何实现这一目标 var转储数据
array(2) { ["Student"]=> array(2) { ["first_name"]=> string(5) "jkjkj" ["User"]=> array(3) { ["group_id"]=> string(1) "1" ["username"]=> string(10) "klklfkfkkl" ["password"]=> string(6) "lklklk" } } ["Guardian"]=> array(2) { [0]=> array(2) { ["Guardian"]=> array(2) { ["first_name"]=> string(5) "jkjkj" ["last_name"]=> string(8) "kjkjkjkj" } ["User"]=> array(4) { ["username"]=> string(7) "kjkjkjk" ["password"]=> string(7) "kjkjjkk" ["group_id"]=> string(1) "1" ["name"]=> string(1) "1" } } [1]=> array(2) { ["Guardian"]=> array(1) { ["last_name"]=> string(6) "jkkjkj" } ["User"]=> array(4) { ["username"]=> string(10) "jkljjljjkl" ["password"]=> string(6) "kjkjkj" ["group_id"]=> string(1) "1" ["name"]=> string(1) "1" } } } }
谢谢
答案 0 :(得分:0)
注意强>
我意识到这是不是的答案,但是太多的信息要把它放在'评论'中
IMO你的设计/逻辑有缺陷。您已经设计了数据库,以便学生可以拥有多个监护人,而监护人可以成为多个学生的监护人(HABTM)。这似乎是正确的,听起来合乎逻辑。
然而,您设计了表单,以便在添加添加的同时输入 的详细信息(如果一切正常)将导致新的Guardian始终插入数据库,即使这些Guardians已经存在于数据库中。因此,基本上你已经在学生和它的监护人之间创建了一个'hasMany'关系,虽然'存储'为'HABTM'。
通过在表单中输入Guardians的详细信息,将插入一个 new Guardian,可能包含与现有Guardian相同的详细信息(name,last_name),但具有不同的{{1导致重复记录
我认为这会给你留下一些选择;
在所有情况下,问问自己,只有Guardian的名字/姓氏足以唯一地识别正确的Guardian。毕竟,守护者可能会分享相同的名字,而且你不想最终改变多个学生的卫报的细节,事实上,他们不是同一个人,只有同一个名字?