Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
>
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?>
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.
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á
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.
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