我是 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_id
。 roles.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>
工作正常。现在我需要在注册表中包含上述输入字段。这意味着为每个表创建模型并定义关联,如 belogsTo
、hasMany
等。在我的 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/