这是我的add()
方法。插入客户后,检查“用户”表中是否已存在email
已发送并获取其代码。如果没有,则插入用户:
public function add()
{
$customer = $this->Customer->newEntity();
if ($this->request->is('post')) {
$email = $this->request->data['email'];
$queryUser = $this->Customer->Users
->find('all')
->select(['id'])
->where(['username' => $email]);
$findUser = $queryUser->first();
if($findUser){
$idUser = $findUser->id;
} else {
$user = $this->Customer->Users->newEntity();
$newUser = [
'username' => $email,
'password' => '123',
'role' => 'customer',
'active' => true,
'email' => $email
];
$user = $this->Customer->Users->patchEntity($user, $newUser);
if ($this->Customer->Users->save($user)) {
$idUser = $user->id;
} else {
throw new NotFoundException('Não foi possível salvar o usuário');
}
}
$this->request->data['user_id'] = $idUser;
$customer = $this->Customer->patchEntity($customer, $this->request->data);
$this->debugDie($customer);
if ($this->Customer->save($customer)) {
$retorno = $this->preparaRetorno(true, $customer->id, 'Customer');
} else {
$retorno = $this->preparaRetorno(false, 'O cliente não pôde ser salvo', 'Customer');
}
$this->set(compact('retorno'));
$this->set('_serialize', 'retorno');
}
}
创建的实体很好。这是它的调试:
object(App\Model\Entity\Customer) {
'nomecliente' => 'novo-cliente-sem-7',
'cnpj' => '10252503627',
'bairro_id' => (int) 1,
'nomerua' => 'Contorno',
'numero' => (int) 2905,
'complemento' => '405',
'pessoacontato' => 'José',
'email' => 'novonovo@nn.lkj',
'telefone1' => '3145555',
'telefone2' => '988888',
'cep' => '30110915',
'país' => 'Brasil',
'estado' => 'MG',
'cidade' => 'Belo Horizonte',
'user_id' => (int) 3,
'[new]' => true,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'nomecliente' => true,
'cnpj' => true,
'bairro_id' => true,
'nomerua' => true,
'numero' => true,
'complemento' => true,
'pessoacontato' => true,
'email' => true,
'telefone1' => true,
'telefone2' => true,
'cep' => true,
'país' => true,
'estado' => true,
'cidade' => true,
'user_id' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Customers'
}
我激活了数据库日志,但日志上没有INSERT
。这个问题让我抓狂!我不明白为什么save()总是返回false,因为我的实体没有验证错误。
感谢任何帮助。