2016-06-28 2 views
0

У меня есть две таблицы со следующими переменными:Вставка в непрерывно двух таблиц из одной формы в CakePHP

Table1 (пользователей): ID, Fname, LName

Table2 (подробности): table1ID, Возраст, DOB

Вот моя форма в виде:

<form action="/admin/users/add" id="WordAdminAddForm" method="post"> 
    <input type="text" name="data[text1][fName]" > 
    <input type="text" name="data[text1][lName]" > 
    <input type="text" name="data[text2][Age]" > 
    <input type="text" name="data[text2][DOB]" > 
<?php echo $this->Form->end(__('Add New User')); ?> 

Я хочу, чтобы вставить Fname и LName в первой таблице, а затем retriving идентификатор и поместить идентификатор, возраст и DOB во второй таблице, только один раз нажав на кнопку отправки.
* Идентификатор является автоматическое приращение

Update
Вот моя модель

class User extends AppModel { 
    public $displayField = 'fName'; 
    public $hasMany = array('Detail'); 

    public $validate = array(
     'fName' => 'notEmpty', 
     'lName' => 'notEmpty' 
    ); 
} 

ответ

-1

Я не знаю, какую версию вы используете торт, но здесь для 2.x

В вашем контроллере просто сохраните нового пользователя, затем используйте идентификатор поля, чтобы сохранить данные.

//save the user 
$this->User->create(); 
$this->User->save($this->request->data['text1']); 
//create the new details with the user id 
$newDetail = $this->request->data['text2']); 
$newDetail['table1ID'] = $this->User->id 
//save the new details 
$this->Detail->create(); 
$this->Detail->save($newDetail); 
0
<?php 
$data1 = $this->request->data['text1']; 
$data2 = $this->request->data['text2']; 

$profile= $this->Profiles->newEntity(); 
    if ($this->request->is('post')) { 
     $profile = $this->Profiles->patchEntity($profile, $data1); 
     if ($this->Profiles->save($data1)) { 
      //get return id from first table 
      $data2['tabelA_id'] = $profile->id; 
      insert into 2nd table 
      $profileChild = $this->ProfileChilds->newEntity(); 
      $profileChild = $this->ProfileChilds->patchEntity($profileChild, $data2); 
     } 
?> 

или вы можете определить отношения hasOne в модели. Cakephp автоматически добавит во вторую таблицу. http://book.cakephp.org/3.0/en/orm/associations.html

0

попробуйте этот простой код для своих работ.

 if(!empty($this->data)) 
     { 
      $this->User->create(); 
      $fName= $this->data['text1']['fName']; 
      $lName=$this->data['text1']['lName']; 

      $data = array(
        "fName"=>$fName, 
        "lName"=>$lName, 

       ); 
      $list=$this->User->save($data); 

      $this->Detail->create(); 
      $Age= $this->data['text2']['Age']; 
      $DOB=$this->data['text2']['DOB']; 

      $data_list= array(
        "Age"=>$Age, 
        "DOB"=>$DOB, 
        "table1ID"=>$list['User']['ID'], 

       ); 
      $this->Detail->save($data_list); 
     } 
+0

Должен ли я помещать этот код в add() на UserController? пожалуйста, посмотрите на модель, которую я добавил. Спасибо –

+0

Да, этот код находится в add() на UserController. –

Смежные вопросы