Primeras noticias de Laravel 7: Binding de Modelos Implícitos

Primeras noticias de Laravel 7: Binding de Modelos Implícitos

Primeras noticias de Laravel 7, Lo nuevo de Laravel 7: Binding de Modelos Implícitos en las Rutas. Laravel no para de sacar nuevas funcionalidades y Taylor Otwell ya ha anunciado la primera característica que se agregará a Laravel 7 y son los binding de modelos implícitos en las rutas. ¿Qué son los Binding de Modelos? Laravel 7 verá la luz en Febrero del 2020.

Laravel no para de sacar nuevas funcionalidades y Taylor Otwell ya ha anunciado la primera característica que se agregará a Laravel 7 y son los binding de modelos implícitos en las rutas..

¿Qué son los Binding de Modelos?

Los binding de modelos en las rutas es una característica muy poderosa que tiene Laravel. Cuando indicamos que una ruta va a recibir un ID, por ejemplo Route::get('post/{id}', '[email protected]'); podemos cambiar el parámetro {id} por el nombre del modelo que queremos obtener, {post} e igualmente enviamos el valor del ID.

De esta manera, Laravel buscara automática el post con dicho ID y tendremos disponible el modelo encontrado, en nuestro controlador. En caso que no encuentre el registro, arrojara un error 404.

route binding model

Hasta acá esto esta barbaro, pero el tema es ¿que paso si no quiero enviar el id y quiero enviar otro valor, como el slug por ejemplo? ¿Hay una forma de que Laravel se siga comportando de la misma forma?

Pues si, si la hay. Pero debemos meter mano en el código. Lo que deberíamos hacer es sobrescribir el método getRouteKeyName() en el modelo Post y establecer por que columna queremos que se haga el binding.

getRouteKeyName

Y a partir de aquí ya podríamos enviar el titulo del post formateado en slug, en vez del ID del producto.

Lo nuevo de Laravel 7: Binding de Modelos Implícitos en las Rutas

A partir de Laravel 7 podremos especificar directamente en la ruta el campo por el que queremos que se haga el binding. Por ejemplo, el caso anterior se reemplazaría con el siguiente código:

Route::get('/posts/{post:slug}', '[email protected]');

Ayudándonos con los dos puntos, establecemos el campo de post por el cual queremos que se haga el binding. Y ya no es necesario sobrescribir el método getRouteKeyName().

Cabe aclarar, que el método getRouteKeyName() no quedara en desuso, por lo tanto, tus proyectos actuales que lo estén utilizando, no tendrán problemas.

Lo mejor de todo, es que vamos a poder definir rutas para la misma entidad pero que se vinculen por distintos campos. Cosa que, con la forma de sobrescribir el método, no podíamos.

Por ejemplo, podríamos tener:

Route::get('/posts/{post:slug}', '[email protected]');

Y también podríamos tener:

Route::get('/posts/{post:id}/edit', '[email protected]');

Conclusión

Me parece una gran característica que permite una mejor organización y flexibilidad. Hoy por hoy, es un poco raro tener un método en el modelo encargado de un proceso que tiene que ver con las rutas, no? Y encima establecer un único campo como binding del modelo. Pero creo que esta característica nos ayudara mucho a nuestros sistemas.

Laravel 7 verá la luz en Febrero del 2020 y espero que vengan muchas nuevas cosas tan interesantes como esta. Sígueme en mis redes sociales para enterarte todas las noticias de Laravel. Nos vemos en la próxima 😉🤙.

Originally published at https://www.laraveltip.com

Laravel PHP webdev

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

Php how to delete multiple rows through checkbox using ajax in laravel

In this article i will let you know to delete multiple rows through checkbox using ajax in laravel and before delete we will give a confirmation message.

Clear Cache in Laravel 6.8 App using Artisan Command Interface (CLI)

In Laravel 6 tutorial, we learn how to use PHP artisan command interface (CLI) to clear the cache from Laravel 6.8 application. How To Clear Cache in Laravel 6.8 Application using Artisan Command Line Interface (CLI)? How to clear route cache using php artisan command? How to easily clear cache in Laravel application? How to clear config cache in PHP Laravel via artisan command? How to clear Laravel view cache? How to Reoptimized class in Laravel via artisan CLI?

Get Weather Data with Laravel Weather

Get Weather Data with Laravel Weather. Laravel Weather is a good package which we can use to get weather data. It's a wrapper around Open Weather Map API (Current weather). A wrapper around Open Weather Map API (Current weather)

5 Laravel’s Hidden Gems

Spread the love1. Stop on first validation error By default, Laravel will check for all validation rules and return a list of errors. But if you want to stop this process after first validation failure, that’s how you can achieve…Read More→

Some of the most frequent how tos in Laravel

Spread the loveHow to get relationship from relationship using With() in Laravel Some times there are cases where you want to get relationship from relationship in Laravel, that can be achieved via following: How to create multiple where clauses in…Read More→