2017-10-12 8 views
0

私は2つのテーブルとshashi_detailsを持っています。私がしたいのは、両方のテーブルにデータを一度に挿入するだけなので、データを挿入するときは、shashisテーブルに移動し、他のテーブルには移動しません。だから私を助けてください。cakephp3.x一度に2つのテーブルにデータを挿入する

これは私のShashisTable.php

class ShashisTable extends Table 
{ 

    public function initialize(array $config) 
    { 
     parent::initialize($config); 

     $this->setTable('shashis'); 
     $this->setDisplayField('name'); 
     //$this->setDisplayField('id'); 
     $this->setPrimaryKey('id'); 

     $this->addBehavior('Timestamp'); 

     $this->hasOne('ShashiDetails', [ 
      'foreignKey' => 'shashi_id' 
     ]); 
    } 

であり、これは私のShashiDetails.php

 public function initialize(array $config) 
    { 
     parent::initialize($config); 

     $this->setTable('shashi_details'); 
     $this->setDisplayField('id'); 
     $this->setPrimaryKey('id'); 

     $this->addBehavior('Timestamp'); 

     $this->belongsTo('Shashis', [ 
      'foreignKey' => 'shashi_id', 
      'joinType' => 'INNER' 
     ]); 
    } 

であり、これはShashisテンプレート

<?= $this->Form->create($shashi) ?> 

    <fieldset> 
     <legend><?= __('Add Shashi') ?></legend> 
     <?php 
      echo $this->Form->input('name'); 
      echo $this->Form->input('email'); 
     ?> 
    </fieldset> 

    <fieldset> 
     <legend><?= __('Add details') ?></legend> 
     <?php 
      echo $this->Form->input('shashi_detail.first_name'); 
      echo $this->Form->input('shashi_detail.last_name'); 
     ?> 
    </fieldset> 

    <?= $this->Form->button(__('Submit')) ?> 

のadd.ctpであり、これはありますShashisController.php

そうでない場合は

if ($this->Shashis->save($shashi)) 
{ 
    $shashi_details = $this->Shashis->ShashisDetails->newEntity(); 
    $shashi_details = $this->Shashis->ShashisDetails->patchEntity($shashi_details, $this->request->getData()); 
    if ($this->Shashis->ShashisDetails->save($shashi_details)) 
    { 
     $this->Flash->success(__('The shashi has been saved.')); 
     return $this->redirect(['action' => 'index']); 
    } 
} 

、あなたのPOSTの内容を確認し、入力でも、あなたの入力(「shashi_detail.first_name」)と入力(「shashi_detail.last_name」)を置き換える:0

public function add() 
    { 
     $shashi = $this->Shashis->newEntity(); 
     if ($this->request->is('post')) 
     { 
      $shashi = $this->Shashis->patchEntity($shashi, $this->request->getData(), [ 
       'associated' => ['ShashiDetails'] 
       ]); 

      if ($this->Shashis->save($shashi)) 
      { 
       $this->Flash->success(__('The shashi has been saved.')); 

       return $this->redirect(['action' => 'index']); 
      } 
      $this->Flash->error(__('The shashi could not be saved. Please, try again.')); 
     } 
     $this->set(compact('shashi')); 
     $this->set('_serialize', ['shashi']); 
    } 
+0

検証も確認してください。 '$ this-> Shashis-> save($ shashi)'のelse部分で 'debug($ shashi-> getErrors());'を試してください。 –

+0

@AmanRawatこの動画はこちらからご覧ください。https://www.youtube.com/watch?v=zTbpvVFYbDU&list=PLG7J_gODl5Ko589KCYUym-0q67-T32CVt&index=4 –

+0

使用している構文が正しいです。私はちょうど検証エラーがあるかどうかを確認するように頼んでいますか? ShashisTable.php –

答えて

0

私はこの作品をすべきだと思います( 'first_name')と入力( 'last_name')です。

+0

モデル名(shashi_detail)を削除すると、shashi_detailsテーブルにレコードを挿入する方法は? –

+0

とあなたの提案されたコードも機能していません。私はこのリンクを使ってこのリンクを作成しました。https://www.youtube.com/watch?v=zTbpvVFYbDU&list=PLG7J_gODl5Ko589KCYUym-0q67-T32CVt&index=4 –

関連する問題