首页 > 解决方案 > 无法使用 cakePHP 3.7 将数据保存在多个表中

问题描述

在将 Fisica 实体保存到数据库时,我一直在尝试将数据保存到其他表中,因为我是 cakephp 新手,所以现在似乎不可能,看过多个帖子、视频、文档,但似乎都没有。请有人帮我弄清楚这有什么问题。

我在实体之间的关系中发现了一个巨大的错误,现在它是这样工作的:Fisica 属于 Pessoa

FisicasTable.php 上的关联

$this->belongsTo('Pessoa')
        ->setForeignKey('id_pessoa')
        ->setJoinType('INNER')
        ->setClassName('Pessoas');

Fisicas 控制器

$fisica = $this->Fisicas->newEntity();
    if ($this->request->is('post')) {
        $fisica = $this->Fisicas->patchEntity($fisica, $this->request->getData(),['associated' => 'Pessoa']);
        if ($this->Fisicas->save($fisica))...

Fisica add.ctp

<legend><?= __('Add Fisica') ?></legend>
    <?php
        echo $this->Form->control('nr_cpf');
        echo $this->Form->control('dt_nascimento');
    ?>
    <legend><?= __('Add Pessoa') ?></legend>
    <?php
        echo $this->Form->control('pessoa.vr_nome');
        echo $this->Form->control('pessoa.nr_telefone');
        echo $this->Form->control('pessoa.vr_email');
    ?>

我收到以下错误: 错误

在向 Fisica add.ctp 提交新寄存器时,我希望此代码插入到两个表中。

标签: phppostgresqlcakephpassociations

解决方案


我发现我在命名数据库中的表以及主键命名模式时遇到了问题。只需将表的名称更新为“Fisicas”和“Pessoas”并将它们的主键和外键更改为 fisica_id 和 pessoa_id 并使用 bake 生成所有代码(例如 cake bake all pessoas)解决了问题(并生成了关联自动地)。


推荐阅读