Save associations cakephp 3

0

I'm trying to save associated data in Cakephp 3, in the database I have two tables tabela entidades(id, nome_principal) and enderecos(id, entidade_id, cidade)

In EntidadesTable I made the association:

$this->hasMany('Enderecos', array(
    'className' => 'Enderecos',
    'foreignkey' => 'entidade_id',
    'joinType' => 'INNER'
));

In Entidades I saved with the following data:

$entidade = $this->Entidades->newEntity();

if ($this->request->is('post')){
    $entidade = $this->Entidades->patchEntity($entidade, $this->request->getData());
    if ($this->Entidades->save($entidade)) {
        $this->Flash->success(__('Entidade cadastrada com sucesso!'));
        return $this->redirect(['action' => 'consultar']);
    } else {
        $this->Flash->error(__('Ops, algo deu errado, verifique se os campos foram preenchidos corretamente!'));
    }
}

$this->set(compact('entidade'));

And in the view, my form looks like this:

<p><strong>Nome<strong><p>  
<p><input type="text" id="nome_principal" name="nome_principal" placeholder="Nome" class="form-control input-md"></p>
<p><strong>Cidade<strong><p>  
<p><input type="text" id="cidade" name="cidade" placeholder="Cidade" class="form-control input-md"></p>

The entity data is normally saved in the database, but the entidade_id and cidade of the enderecos table do not save, can anyone help me?

    
asked by anonymous 13.05.2017 / 23:48

1 answer

1

I have edited the patchEntity by passing the key associated which informs the associated model that will be saved:

$entidade = $this->Entidades->patchEntity($entidade, $this->request->getData(), ['associated' => ['Enderecos']]);

Here I created your inputs using the FormHelper following the associated data pattern:

echo $this->Form->control('nome_principal', ['id' => 'nome_principal', 'class' => 'form-control input-md', 'placeholder' => 'Nome', 'label' => 'Nome']);
// Enderecos controls (hasMany)
echo $this->Form->control('enderecos.0.cidade', ['id' => 'cidade', 'class' => 'form-control input-md', 'placeholder' => 'Cidade', 'label' => 'Cidade']);

See Saving HasMany Associations and Converting Request Data into Entities for more details.

    
15.05.2017 / 15:13