Model view controller 如何同时在多个表中创建新记录?

Model view controller 如何同时在多个表中创建新记录?,model-view-controller,cakephp,cakephp-1.3,Model View Controller,Cakephp,Cakephp 1.3,我想知道如何实现一个视图,允许用户在相关模型中输入多个(未知)数量的记录 例如,我有两个模型,称为组和用户。我想实现一个视图,允许我创建一个组(这很容易),在同一个视图中,允许我创建多个属于这个组的用户 我希望我的问题是清楚的,如果不只是让我知道..在后端,使用saveAll($data),准备您的数据,如: // Prepare the data for the Group hasMany User $data = array('Group' => array(

我想知道如何实现一个视图,允许用户在相关模型中输入多个(未知)数量的记录

例如,我有两个模型,称为组和用户。我想实现一个视图,允许我创建一个组(这很容易),在同一个视图中,允许我创建多个属于这个组的用户


我希望我的问题是清楚的,如果不只是让我知道..

在后端,使用saveAll($data),准备您的数据,如:

// Prepare the data for the Group hasMany User
$data = array('Group' => array(
                'id' => 5, 
                'name' => 'my group',
                'User' => array(
                  array('id'=>1,'username' => 'john'),
                  array('id'=>2,'username' => 'pachelbel'))
                )
              )

// OR if it's being passed in, just use $this->data in place of $data

// Save all the data
$this->Group->saveAll($data)
在视图中,您希望准备表单,使其具有正确的数组键:

<form id="GroupCreateForm" method="post" action="/groups/create">
  <input type="hidden" name="data[Group][id]" value="5" />
  <input type="hidden" name="data[Group][name]" value="my group" />
    <input type="hidden" name="data[Group][User][0][id]" value="1" />
    <input type="hidden" name="data[Group][User][0][username]" value="john" />
    <input type="hidden" name="data[Group][User][1][id]" value="2" />
    <input type="hidden" name="data[Group][User][1][username]" value="pachelbel" />
</form>

如果要动态添加用户到表单中,请考虑使用JavaScript注入新的<代码>输入< /COD>元素。< /P>


有关更多信息,请参阅。

使用Cake的表单帮助程序,您可以更智能地完成此操作。在上面的示例中,您可以这样重写:

<?php
echo $this->Form->Create('Group');
echo $this->Form->input('Group.id');
echo $this->Form->input('Group.name');
for($i=0;$i<10;$i++){
   $this->Form->input('User.'.$i.'.id');
   $this->Form->input('User.'.$i.'.name');
}
?>


通过这种方式,您可以从自动错误处理以及字段值填充中获益。

谢谢您的回复。我在cakephp的食谱中读到了这篇文章。前端呢。。如何实现视图?这就足够了。我可以在这里做剩下的事。谢谢你的帮助,Jasie,也请考虑使用事务!谢谢你的建议,我会调查的。