CakePHP 3:save方法总是返回false,但是我的实体很好

时间:2017-01-06 19:35:59

标签: cakephp cakephp-3.0

这是我的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,因为我的实体没有验证错误。

感谢任何帮助。

0 个答案:

没有答案