无法使用 cakePHP 3.7 将数据保存在多个表中

Cant save data in multiple tables using cakePHP 3.7

在将 Fisica 实体保存到数据库时,一直在尝试将数据保存到其他 table,因为我是 cakephp 的新手,现在看来不可能,已经看过多个帖子、视频、文档和 none 似乎有效。请有人帮我找出问题所在。

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

协会在FisicasTable.php

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

Fiscas 控制器

$fisica = $this->Fisicas->newEntity();
    if ($this->request->is('post')) {
        $fisica = $this->Fisicas->patchEntity($fisica, $this->request->getData(),['associated' => 'Pessoa']);
        if ($this->Fisicas->save($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');
    ?>

我收到以下错误: error

我希望在向 Fisica add.ctp.add.ctp.

提交新寄存器时将这段代码插入到两个 table 中

您必须获取所有将存储数据的表,能否请您查看文档 https://book.cakephp.org/3.0/en/orm/saving-data.html#saving-with-associations 代码示例是

// Prior to 3.6.0
$articlesTable = TableRegistry::get('Articles');

$articlesTable = TableRegistry::getTableLocator()->get('Articles');
$author = $articlesTable->Authors->findByUserName('mark')->first();

$article = $articlesTable->newEntity();
$article->title = 'An article by mark';
$article->author = $author;

if ($articlesTable->save($article)) {
    // The foreign key value was set automatically.
    echo $article->author_id;
}

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