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