私は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']);
}
検証も確認してください。 '$ this-> Shashis-> save($ shashi)'のelse部分で 'debug($ shashi-> getErrors());'を試してください。 –
@AmanRawatこの動画はこちらからご覧ください。https://www.youtube.com/watch?v=zTbpvVFYbDU&list=PLG7J_gODl5Ko589KCYUym-0q67-T32CVt&index=4 –
使用している構文が正しいです。私はちょうど検証エラーがあるかどうかを確認するように頼んでいますか? ShashisTable.php –