Novedades de Laravel 6: Modelos implícitos en validaciones

Spread the love

No se tú, pero para mi es muy raro tener que pasar el nombre de la base de datos en las validaciones unique y exists en lugar del modelo, que seria lo mas lógico.

Por ejemplo, si quieres validar que un usuario no esta repetido en la base de datos creamos algo como lo siguiente:

'email' => 'unique:users,email',

Y bueno puedes pensar que no es mucho problema, pero ahora imagina que el nombre de la base de datos no es igual al modelo.

¿verdad que ya no es estan divertido?.

Vas a tener que revisar el modelo para saber el nombre de la tabla, y eso es molesto si tienes mas de un modelo con el mismo problema!.

Seria más util que solo pasaramos el modelo y listo: algo como esto

'email' => 'unique:App\User,email',

Eso seria genial… pero espera.

¿Qué crees?

Con Laravel 6 eso ya esta resuelto Papa!

Así que las dos validaciones que hacen uso de la base de datos (unique y exists) ahora soportan que indiques el modelo y ellas se hacen cargo de lo demás!.

Vaya estos de Laravel se lo piensan todo.

Validación Unique

Puedes pasar indcar el modelo en la validación unique como sigue

$validator = Validator::make(['email' => $user->email],[
            'email' => 'unique:App\User,email',
        ]);

$validator = Validator::make(['email' => $user->email],[
            'email' => 'unique:'.User::class.',email',
        ]);

También lo puedes aplicar usando la clase Rule

$validator = Validator::make(['email' => $user->email],[
            'email' => Rule::unique(User::class),
        ]);
//...
$validator = Validator::make(['email' => $user->email],[
            'email' => Rule::unique('App/User'),
        ]);

Validación Exists

Tambien para Exists podemos hacer lo mismo

$validator = Validator::make(['id' => $user->id],[
            'id' => Rule::exists(User::class),
        ]);

$validator = Validator::make(['id' => $user->id],[
            'id' => 'exists:App\User,id',
        ]);

Vídeo

Para finalizar te dejo un video donde puedes ver esta validación en acción, solo te aviso que en el video no se toca la validación en formato de string, porque no estaba implementada cuando edite el vídeo.

Recueda compartir el articulo y dejame tus comentarios!.