多行中的cakephp外键不起作用

多行中的cakephp外键不起作用,cakephp,Cakephp,我有两张桌子: 门票: 详情: 车票有11个区域,分别是msg_acc、nom_buro、heure、date。。。。 表详细信息中字段nom的属性是什么 在一个区域中有文本、警察、粗体和斜体 因此,必须在表详细信息中保存11行 我想创建表票证中包含nom模型的表单,并在表详细信息中保存11行,表详细信息中的外键票证id是新票证创建nom模型: 我创造了形式保存11行市场是好的,但前键不工作 nom_模型未保存在表中票证,11行保存时票证id等于0 model Ticket.php中的代码 视图

我有两张桌子:

门票:

详情:

车票有11个区域,分别是msg_acc、nom_buro、heure、date。。。。 表详细信息中字段nom的属性是什么 在一个区域中有文本、警察、粗体和斜体

因此,必须在表详细信息中保存11行

我想创建表票证中包含nom模型的表单,并在表详细信息中保存11行,表详细信息中的外键票证id是新票证创建nom模型:

我创造了形式保存11行市场是好的,但前键不工作 nom_模型未保存在表中票证,11行保存时票证id等于0

model Ticket.php中的代码

视图中的th代码add.ctp


您正在通过saveAll保存请求数据,而无需关联票证

勾选的关联数据位于$this->request->data['Ticket']中,将被忽略:

//(Line 4 of your posted controller)
$this->Detail->saveAll($this->request->data['Detail'])
更新:

您的$this->request->数据应具有以下结构:

Array
(
   [Ticket] => Array
                 (
                       [id] => 1
                       ...
                 )
   [Detail] => Array
                      (
                       [0] => Array
                             (                                 
                               [ticket_id] => 1
                               ...
                             )

                       [1] => Array
                             (                                  
                               [ticket_id] => 1
                               ...
                             )
                       ..........
                     )
)
调整您的视图,生成该数据字段,您可以尝试通过$this->Detail->saveAll$this->request->data保存发布的数据

更新

您在basic中的视图应如下所示:

   <fieldset>
      <legend>Add New Detail</legend>
   <?php

   echo $this->form->input("Ticket.nom_model");
   echo $this->form->hidden("Ticket.id", array('value' => '1'));
   for($i=0;$i < $count;$i++){
      echo $this->form->input("Detail.$i.name");
      echo $this->form->input("Detail.$i.text");
      echo $this->form->input("Detail.$i.taille");
      echo $this->form->input("Detail.$i.police");
      echo $this->form->input("Detail.$i.bold");
      echo $this->form->input("Detail.$i.italic");
      echo $this->form->hidden("Detail.$i.ticket_id", array('value' => '1'));} ?> 
   <?php echo $this->form->end('Submit');?> 

   </fieldset>

我找不到解决方案注意:在您看来,您忘记了生成隐藏字段的回显。我将$this->Detail->saveAll$this->request->data['Detail']更改为$this->Detail->saveAll$this->request->data['Ticket']我已经发布了数据字段,您的表单应该生成。此外,我发布了一个示例视图,该视图的工作票证id值为1,但我希望票证id值为最后一个值exp:在表票证中,我有5张票证。票证id值必须为5
    <?php
class Detail extends AppModel{   
   var $name = 'Detail';
   public $belongsTo = array(
   'Ticket'
   );
}
?>
    $this->set('title_for_layout', __('Add Details'));
        $tickets= $this->Detail->Ticket->find('list');
        if (!empty($this->request->data)) {
        if($this->Detail->saveAll($this->request->data['Detail'])){
          $this->Session->setFlash(__('The Model has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The Model could not be saved. Please, try again.'));
              }
          $this->redirect(array('action' => 'index'));

          }   
                $this->set('tickets', $tickets);
<?php echo $this->form->create('Detail');?>
   <fieldset>
      <legend>Add New Detail</legend>
   <?php
   echo $this->form->input('Ticket.$i.nom_model');//not working
   for($i=0;$i<$count;$i++){
      echo $this->form->input("Detail.$i.name");
      echo $this->form->input("Detail.$i.text");
      echo $this->form->input("Detail.$i.taille");
      echo $this->form->input("Detail.$i.police");
      echo $this->form->input("Detail.$i.bold");
      echo $this->form->input("Detail.$i.italic");
       $this->form->hidden('ticket_id');} ?> </fieldset>
      <?php echo $this->form->end('Submit');?> 
//(Line 4 of your posted controller)
$this->Detail->saveAll($this->request->data['Detail'])
Array
(
   [Ticket] => Array
                 (
                       [id] => 1
                       ...
                 )
   [Detail] => Array
                      (
                       [0] => Array
                             (                                 
                               [ticket_id] => 1
                               ...
                             )

                       [1] => Array
                             (                                  
                               [ticket_id] => 1
                               ...
                             )
                       ..........
                     )
)
   <fieldset>
      <legend>Add New Detail</legend>
   <?php

   echo $this->form->input("Ticket.nom_model");
   echo $this->form->hidden("Ticket.id", array('value' => '1'));
   for($i=0;$i < $count;$i++){
      echo $this->form->input("Detail.$i.name");
      echo $this->form->input("Detail.$i.text");
      echo $this->form->input("Detail.$i.taille");
      echo $this->form->input("Detail.$i.police");
      echo $this->form->input("Detail.$i.bold");
      echo $this->form->input("Detail.$i.italic");
      echo $this->form->hidden("Detail.$i.ticket_id", array('value' => '1'));} ?> 
   <?php echo $this->form->end('Submit');?> 

   </fieldset>
public $belongsTo = array(
    'Ticket' => array(
        'className' => 'Ticket',
        'foreignKey' => 'ticket_id'
        )
   );