无法使用 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 ,例如)解决了问题(并自动生成关联)。
在将 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 ,例如)解决了问题(并自动生成关联)。