Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Master_Cyber

Eloquent não insere null

Recommended Posts

Pessoal bom dia, estou usando o Eloquent em um projeto meu (fora do laravel), mas está acontecendo uma coisa estranha:

$model = new \Produto;
$model->save();

Se eu fizer isso, sem atribuir valor a alguma coluna do banco ele insere normalmente...

 

Digamos, tem uma coluna chamado Nome (Tabela Produto) que é Not Null, ele insere como uma string vazia...

 

Tanto é que se eu pesquisar assim ele não encontra:

SELECT * FROM PRODUTOS WHERE NOME IS NULL

E se eu pesquisar assim, ele encontra:

SELECT * FROM PRODUTOS WHERE NOME = ''

Vocês sabem como resolver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

NULL e string vazia ('') são coisas diferentes. Por isso os dois SELECTs retornam coisas diferentes

 

Você pode criar um Validator na model.

 

Veja:

http://daylerees.com/trick-validation-within-models/

http://laravel.com/docs/4.2/validation

Compartilhar este post


Link para o post
Compartilhar em outros sites

NULL e string vazia ('') são coisas diferentes. Por isso os dois SELECTs retornam coisas diferentes

 

Você pode criar um Validator na model.

 

Veja:

http://daylerees.com/trick-validation-within-models/

http://laravel.com/docs/4.2/validation

 

O caso é que não estou usando o Laravel, no meu caso o $new = Input::all();

 

será equivalente ao que? $_POST?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

O caso é que não estou usando o Laravel, no meu caso o $new = Input::all();

 

será equivalente ao que? $_POST?

Ta dando erro em $v = Validator::make($data, $this->rules);

 

Não encontrar a classe Validator, acho que ela faz parte do Laravel também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Input::all() engloba $_GET e $_POST

 

Sobre o Validator, já testou com a propriedade $rules dentro da model, como mostrado no primeiro link que mandei?

 

Nunca usei o Eloquent fora do Laravel, então não tenho certeza se o Validator funcionará

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa amigo, estava faltando eu baixar o illuminate/validation...

 

Aí consegui fazendo assim:

public function validate($data) {

        $messages = include __DIR__ . '\..\Lang\pt-BR\validation.php';
        $factory = new ValidatorFactory(new Translator('en'));
        $validator = $factory->make($data, $this->rules, $messages, $messages['attributes']);

        if ($validator->fails()) {
            $this->errors = $validator->getMessageBag()->getMessages();
            return false;
        }

        return true;
    }

    public function errors() {
        return $this->errors;
    }

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.