Не могу сохранить данные в нескольких таблицах, используя cakePHP 3.7 - PullRequest
0 голосов
/ 23 мая 2019

Я пытался сохранить данные в другую таблицу при сохранении сущности Fisica в базу данных, поскольку я новичок в cakephp, сейчас это кажется невозможным, я видел несколько постов, видео, документацию, и ни одна из них, похоже, не работает.Пожалуйста, кто-нибудь, помогите мне выяснить, что с этим не так.

Я обнаружил огромную ошибку в отношениях между сущностями, теперь это работает так: Fisica принадлежат Пессоа

ассоциаций вFisicasTable.php

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

Fisicas Controller

$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.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Я обнаружил, что у меня возникла проблема с именами моих таблиц в базе данных в сочетании с шаблоном именования первичных ключей. Просто изменив имена таблиц на «Fisicas» и «Pessoas» и изменив их первичные и внешние ключи на fisica_id и pessoa_id и сгенерировав весь код с bake (например, cake bake all pessoas), решил проблему (и сгенерировал ассоциации автоматически).

0 голосов
/ 23 мая 2019

Вы должны получить все таблицы, в которых будут храниться данные, пожалуйста, посмотрите документацию 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;
}
...