Los casteos de los modelos se convirtieron a métodos en Laravel 11

- Andrés Cruz

Los casteos de los modelos se convirtieron a métodos en Laravel 11

Los Model Cast en Laravel 10 se definen mediante la propiedad $casts. Sin embargo, en Laravel 11, puedes definir un método casts(), que abre la posibilidad de usar métodos estáticos en ruedas integradas, así como definir métodos estáticos para ruedas personalizadas:

use App\Enums\UserOption;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;

// ...

/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
   return [
       'email_verified_at' => 'datetime',
       'password' => 'hashed',
       'options' => AsEnumCollection::of(UserOption::class),
   ];
}

En Laravel 10, la misma conversión se vería así, ya que no se pueden llamar métodos estáticos al definir una propiedad:

protected $casts = [    'options' => AsEnumCollection::class.':'.UserOption::class,];

Esta actualización es compatible con versiones anteriores de Laravel 10 y aún puede definir conversiones a través de la propiedad $casts combinada con el nuevo método casts(). La propiedad $casts y el método casts() se fusionan, y las claves del método tienen prioridad sobre la propiedad $casts.

Se recomienda mover las conversiones a la versión del método si desea aprovechar los métodos estáticos para las ruedas integradas.

Articulo original:

https://laravel-news.com/model-casts

 

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.