Laravel 8 Validación FormRequest
Usando nombres diferentes de los campos en la base de datos
Cuando en tus formularios usas nombres en los inputs que son diferentes a los de la tabla en la base de datos.
Tabla en Migrations
Aqui declaramos la tabla, especificando que los campos unicos moduloID y descripcion, van relacionados con un nombre de relación “unicoenregistro”
public function up() { Schema::create('sys_estatus', function (Blueprint $table) { $table->id('estatusID'); $table->integer('moduloID'); $table->string('descripcion',40); $table->boolean('borrado')->default(0); $table->timestamps(); $table->unique(['moduloID','descripcion'],'unicoenregistro'); }); }

Formulario
En los formularios html, uso nombres diferentes a la tabla para que del lado del cliente o compilación no puedan intentar inyectar datos si supieran el nombre de los campos en la tabla.
<form class="needs-validation" method="POST" action="{{route('estatus.store')}}"> @csrf <div class="row"> <div class="col-md-4 mb-4"> <label for="firstName">Descripción</label> <input type="text" class="form-control" id="nombre" name="nombre" placeholder="Escribe el nombre del modulo" value="{{old('nombre')}}"> @error('nombre') <div class="alert alert-danger" role="alert"> <small>*{{$message}}</small> </div> @enderror </div> </div> <div class="row"> <div class="col-md-4 mb-4"> <label for="modulo">Módulo</label> <select class="custom-select d-block w-100" id="modulo" name="modulo"> <option value="">Elije...</option> </select> @error('modulo') <div class="alert alert-danger" role="alert"> <small>*{{$message}}</small> </div> @enderror <hr class="mb-12"> </div> </div> <button class="btn btn-primary btn-lg btn-block bg-blue-500 " type="submit">Agregar Estatus</button> </form>
FormRequest
Aqui fue donde buscando por internet, encontré esta forma, para que funcione y no este marcando error hay que agregar esta clase “Illuminate\Validation\Rule;”, entonces en la mayoria de los ejemplos viene solo Rule::unique(‘tabla’)->where(…..), y asi, pero pues curioseando un poco, o de hecho en el editor, fijandose mas, te das cuenta que acepta un segundo parametro y es el nombre del campo, asi es como pudo funcionar, si hay otra manera mas facil. Favor de hacermelo saber, si la encuentro publicare otra entrada.
public function rules() { return [ 'nombre'=> [Rule::unique('sys_estatus','descripcion')->where('moduloID',$this->modulo) ], 'modulo'=> [ 'required', Rule::unique('sys_estatus','moduloID')->where('descripcion',$this->nombre) ], ]; }

Traumas de la niñez
Siempre fue un trauma principalmente por mis hermanas, me imagino que era la forma de que siempre usaran calzón, porque si no una lagartija podría introducirse dentro de ellas.
Y hace poco me encontre con este post
https://www.facebook.com/mariaasuncion.castillo.1/posts/3048230998629588