2017-05-16 7 views
0

나는 사용자클라이언트 테이블을 가지고 있습니다.CakePHP에서 한 모델의 여러 모델 만들기

-- ----------------------------------------------------- 
-- Table `users` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `email` VARCHAR(45) NOT NULL, 
    `password` VARCHAR(255) NOT NULL, 
    `usertype` CHAR(2) NOT NULL, 
    `created` DATETIME NOT NULL, 
    `modified` DATETIME NULL DEFAULT NULL, 
    `firstname` VARCHAR(45) NOT NULL, 
    `lastname` VARCHAR(45) NOT NULL, 
    `phonenumber` VARCHAR(45) NOT NULL, 
    `suburb` VARCHAR(45) NOT NULL, 
    `state` VARCHAR(10) NOT NULL, 
    `businessname` VARCHAR(45) NULL DEFAULT NULL, 
    `image` BLOB NULL DEFAULT NULL, 
    `valid` INT NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE INDEX `email_UNIQUE` (`email` ASC)) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8; 
-- ----------------------------------------------------- 
-- Table `clients` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `clients` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `user_id` INT NOT NULL, 
    PRIMARY KEY (`id`), 
    INDEX `CLIENTS_FK_idx` (`user_id` ASC), 
    CONSTRAINT `CLIENTS_FK` 
    FOREIGN KEY (`user_id`) 
    REFERENCES `users` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

나는이 두 테이블을 구운하고 나는 사용자 등록 페이지를 만든 다음과 같이

는 그들은 연결되어 있습니다. 양식을 제출할 때 데이터베이스에 사용자클라이언트 개체를 모두 생성해야합니다. 나는 코드가 자동으로 클라이언트에 테이블뿐만 아니라 모든 데이터를 미리 채우려

public function clientregistration() 
    { 
     //Register a new client. Client enters all details and the system sets usertype=CL 
     $user = $this->Users->newEntity(); 
     if ($this->request->is('post')) { 
      $user = $this->Users->patchEntity($user, $this->request->getData()); 
      $user->usertype = 'CL'; 
      $user->valid = 1; 

      if ($this->Users->save($user) && $this->Coaches->($coach)) { 
       $this->Flash->success(__('You have successfully registered.')); 

       return $this->redirect(['action' => 'login']); 
      } 
      $this->Flash->error(__('Registration failure. Please, try again.')); 
     } 
     $this->set(compact('user')); 
     $this->set('_serialize', ['user']); 

:

여기 내 UsersController 방법 폼 CakePHP의입니다.

어떻게하면됩니까?

답변

2

미리 채우기를 원하는 항목을 모르겠습니다. 저장할 user_id 필드 만 있습니다.

$client = $this->Users->Clients->newEntity(); 
$client->user_id = $user->id; 
$this->Users->Clients->save($client); 
+0

감사 인 Szymon : 당신이 사용자를 저장 한 후 협회가 UsersTable.php 올바르게 설정되어 있는지 그래서, 당신은 클라이언트 개체를 저장할 수 있습니다! ! –

+0

관련 데이터를 별도로 저장하지 않아도됩니다. [** ORM은 자동으로 처리 할 수 ​​있습니다 **] (https://book.cakephp.org/3.0/en/orm/saving-data.html#saving- 연관), 관련 데이터로 사용자 엔티티 (입력)를 올바르게 준비하기 만하면됩니다. 그리고 실제로 물건을 별도로 (어떤 이유로 든) 저장한다면, 항상 거래에서하십시오! @ BigGreenAlligator – ndm