php - 在 CakePHP 中从一个模型创建多个模型

标签 php mysql database cakephp cakephp-model

我有一个用户和一个客户表。

它们的链接如下:

-- -----------------------------------------------------
-- 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;

我已经烘焙了这两个表,并创建了一个用户注册页面。提交表单后,我希望数据库创建一个用户和一个客户端对象。

这是我的 UsersController 方法,形式为 CakePHP:

  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']);

我希望代码也自动预填充客户表中的所有数据。

我该怎么做?

最佳答案

我不知道您要预填充什么,您只有 user_id 字段要保存。因此,如果您在 UsersTable.php 中正确设置了关联,则可以在保存 User 后保存 Client 实体:

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

关于php - 在 CakePHP 中从一个模型创建多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43994096/

相关文章:

php - while循环跳过查询

javascript - 清除初始值后如何在输入字段中输入新值?

MySQL 5.6 错误 1054 : Unknown column in 'field list' on INSERT

php - 仅打印一次数组中的值

php - 在php中将一个大字符串写入文件

sql - 如何将 GREATER_THAN/LESS_THAN 运算符添加到 Zend\Db\Sql 中的数据库查询?

MYSQL - 选择4个随机行并将它们转置为插入语句的列

php - 如何在 MySQL 数据库中保留 HTML 格式?

php - 模型工厂与现有模型的关联

php - 如何计算从当前系统日期到过去和 future 日期的 365 天,并使用 php 和 mysql 相应地获取数据