不保存数据到2表在cakephp中有外键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不保存数据到2表在cakephp中有外键相关的知识,希望对你有一定的参考价值。

关于项目cakephp。我有2个型号

<?php class VisaPerson extends AppModel {
public $name = 'VisaPerson';
public $primaryKey  = 'id';}?>

<?php class VisaProcess extends AppModel {
    public $name = 'VisaProcess';
    public $primaryKey  = 'id';
    public $belongsTo = array(
            'VisaPerson' => array (
                    'className' => 'VisaPerson',
                    'foreignKey' => 'people_id'
            )
    );
}
?>

在控制器中,我写道:

    if ($this->request->is('post')) {
        if (!empty($this->request->data)) {
           $person = $this->VisaPerson->save($this->request->data);
           if (!empty($person)) {
               $this->request->data['VisaProcess']['people_id'] = $this->$person->id;
               $this->VisaPerson->VisaProcess->save($this->request->data);
        }
    }

保存在VisaPerson上的数据,但是VisaProcess上的数据不能自动保存。请帮助我!

答案

我记得你需要将它添加到你的VisaPerson模型中:

public $hasMany = array(
    'VisaProcess' => array(
        'className'  => 'VisaProcess',
        'foreignKey' => 'people_id'
    )
);

之后你只需要保存VisaPerson并且两个表都将被填充(如果存在$this->request->data['VisaProcess']$this->request->data['VisaPerson']):

$this->VisaPerson->save($this->request->data);

以上是关于不保存数据到2表在cakephp中有外键的主要内容,如果未能解决你的问题,请参考以下文章

数据库中有外键时JavaBean的写法

CakePHP:hasOne 相关表在更新时保存多个条目

SQL 怎样删除有外键约束的表

如何在有外键关系的表中删除数据

cakephp 3.0 注册与现有用户问题关联的帐户

需要使用hibernate dao实现方法保存不同jsp页面的两张表有外键关系