Hi,
There are 4 tables:
User, Seller, Shopkeeper and Address. The relations are: one User has one
Seller, one Seller has one Shopkeeper and one User has many Address.
I baked to create all the code I am using. To save the Shopkeeper I use the
Shopkeeper Controller and the add.ctp of the Shopkeeper template.
I am able to save the Shopkeeper and the Seller data just saving the
Shopkeeper entity: $this->Shopkeepers->save($shopkeeper)
But the problem is that it does not save the User data and the Address and
I always have the constraint error:
*Error: * SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add
or update a child row: a foreign key constraint fails (`sellers`,
CONSTRAINT `sellers_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users`
(`id`) ON DELETE CASCADE ON UPDATE CASCADE)
*This is the Shopkeeper Controller add function:*
public function add()
{
$shopkeeper = $this->Shopkeepers->newEntity();
$user = $this->Shopkeepers->Sellers->Users->newEntity();
if ($this->request->is('post'))
{
$this->request->data['user']['status'] = 'Inativo';
$this->request->data['user']['session'] =
$this->request->session()->id();
$this->request->data['user']['ip'] =
$this->request->clientIp();
$this->request->data['user']['role'] = 'Lojista';
$this->request->data['user']['login_error'] = 0;
$this->request->data['seller']['type'] = 'M';
$user = $this->Shopkeepers->Sellers->Users->patchEntity($user,
$this->request->data);
$shopkeeper = $this->Shopkeepers->patchEntity($shopkeeper,
$this->request->data);
if ($this->Shopkeepers->save($shopkeeper))
{
$this->Flash->success('The shopkeeper has been saved.');
return $this->redirect(['action' => 'index']);
}
else
{
$this->Flash->error('The shopkeeper could not be saved.
Please, try again.');
}
}
$surveys =
$this->Shopkeepers->Sellers->Users->Surveys->find('list');
$this->set(compact('users', 'surveys'));
$plans = $this->Shopkeepers->Sellers->Plans->find('list');
$this->set(compact('sellers', 'plans'));
$this->set(compact('shopkeeper'));
$this->set('_serialize', ['shopkeeper']);
}
*This is the add.ctp*
<div class="actions columns col-lg-2 col-md-3">
</div>
<div class="shopkeepers form col-lg-7 col-md-9 columns">
<?= $this->Form->create($shopkeeper);?>
<fieldset>
<legend><?= __('Add Shopkeeper') ?></legend>
<?php
echo $this->Form->input('user.name',['label' => __('Nome
Fantasia')]);
echo $this->Form->input('cnpj',['label' => __('CNPJ')]);
echo $this->Form->input('seller.contact',['label' => __('Pessoa
de contato')]);
echo $this->Form->input('user.username',['label' =>
__('Email')]);
echo $this->Form->input('user.password',['label' =>
__('Senha')]);
echo $this->Form->input('user.password_confirmation',['type' =>
'password', 'label' => __('Confirmação de Senha')]);
echo $this->Form->input('user.survey_id', ['options' =>
$surveys,'label' => __('Como conheceu'),'empty' => __('--Selecione--')]);
echo $this->Form->input('seller.plan_id', ['options' =>
$plans,'label' => __('Selecione um Plano'),'empty' => __('--Selecione--')]);
echo $this->Form->input('seller.website',['label' => __('Página
na internet')]);
echo $this->Form->label(__('Link dos seus discos no Prefiro
Vinil'));
echo "<div class='input-group'>";
echo "<span class='input-group-addon'
id='basic-addon1'>www.prefirovinil.com.br/</span>";
echo $this->Form->input('seller.link',['aria-describedby' =>
'basic-addon1', 'label' => false]);
echo "</div>";
echo $this->Form->input('token_bcash');
?>
</fieldset>
<?= $this->Form->button(__('Salvar'), ['class' => 'btn-success']) ?>
<?= $this->Form->end() ?>
</div>
Can anyone help me?
Thanks.
Paulo
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.