Olá galera,
No post Aplicação com Laravel 4 - Models e Validations são apresentadas alguns tipos de validações, entre elas a unique. Hoje iremos demonstrar como validar a unicidade envolvendo vários campos.
Para exemplificar, vamos utilizar um model de bairro que possui uma chave estrangeira de município. Os campos do nosso model bairro: id, descricao, municipio_id. A idéia que é não tenhamos uma descrição repetida de um bairro dentro do mesmo munícipio.
protected $table = 'bairros'; protected $fillable = array('descricao', 'municipio_id'); public static $rules = array( 'descricao' => 'required|min:3|max:80|unique:bairros,descricao', 'municipio_id' => 'required|integer' );
No código acima estão somente as regras, não há nenhuma novidade. No seguinte iremos escrever a validação.
public static function validate($data) { $id = 'NULL'; $municipio_id = $data['municipio_id']; if(Request::getMethod() == 'PUT') $id = $data['id']; self::$rules['descricao'] .= ", {$id}, id ,municipio_id, {$municipio_id}"; return Validator::make($data, self::$rules); }
Na linha 3, é atribuído ao $id o valor NULL que será usado na inclusão.
Na linha 4, é capturado o valor do munícipio submetido pelo formulário.
Nas linha 6 e 7, é checado se o request é do tipo PUT (alteração). Se for é capturado o id do registro submetido.
Na linha 9, são adicionados os parâmetros para o unique.
Bastante simples não é verdade?
Fica aí a dica. Grande abraço
Nenhum comentário:
Postar um comentário