mysql - 在 CakePHP 2.5.1 中将数据从一个表单保存到多个表中

标签 mysql cakephp cakephp-2.x

我是 CakePHP 的新手,正在使用 CakePHP 2.5.1 和 MySQL 开发云应用程序。我有下表:

用户

  user_id ,
  people_id(FK- people.people_id),
  username,
  password

  people_id, 
  manager_id(FK- people.people_id), 
  firsr_name,
  last_name,

角色

  role_id ,
  people_id (FK- people.people_id),
  role

地址

  address_id,
  people_id (FK- people.people_id),
  street,
  house no,
  post code,
  city

外键 people.manager_id 指的是 primary_key people.people_idroles.role 字段可以包含 'manager''customer'

现在,在我的注册表中,将有以下输入字段:

-username
-password
-first name
-last name
-street
-house no
-post code
-city
-role     

我使用了用户模型(User.php)、注册表单(add.ctp)和 Controller (UsersController.php)来输入用户名和密码;并实现登录、注销。

View add.ctp:

<div class="users form">
<?php echo $this->Form->create('User'); ?>
    <fieldset>
        <legend><?php echo __('Registrierung'); ?></legend>

        <?php echo $this->Form->input('username');

              echo $this->Form->input('password');
              echo $this->Form->input('password_confirm', array('label' => 'Confirm Password', 'maxLength' => 255, 'title' => 'Confirm password', 'type'=>'password'));


        );  
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Register')); ?>
</div>

工作正常。现在我需要在注册表中包含上述输入字段。这意味着为每个表创建模型并定义关联,如 belogsTohasMany 等。在我的 User 模型中,我定义了以下关联:

class User extends AppModel {

    public $belongsTo = array(
            'Person' => array(
                'className' => 'Person',
                'foreignKey' => 'people_id'

            )
    );
}

但是,它会抛出以下错误:

Database Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Person.id' in 'on clause' 

谁能告诉我如何实现这些关联?我找不到任何符合我要求的示例。

最佳答案

您可以在每个模型中显式定义主键,但这会使它变得非常复杂。

我建议您遵守约定。请将所有主键字段更改为“id”。这可能会解决您的大部分问题。

和平! xD

关于mysql - 在 CakePHP 2.5.1 中将数据从一个表单保存到多个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860254/

相关文章:

mysql - 没有具有 id 列的表的 hasMany 关系

php - 如何在 PHP7 上使用 CakePHP 2 解决错误处理程序中的 "Uncaught TypeError"?

mysql - 如果长于 n 时间,则获取两条记录之间的时间差

php - CakePHP - 获取/ Controller / Action 路径的快速方法?

php - 在另一个表中发生不相关的插入操作后,Mysql 行被删除

php - 在 Controller 中访问 shell 方法?蛋糕 PHP 1.3

cakephp - 如何在cakephp中传递多个flash消息?

php - 使用 php 代码的 MySQL 服务器错误

java - 将 19999 年存入数据库

java - Hibernate:重命名 @ManyToOne 关系中自动生成的 Id