¿Cómo hacer casting de Array & JSON en un Laravel Model?

September 19, 2019 por Eleazar Resendez – 1 min read

De acuerdo a la documentación de Laravel: https://laravel.com/docs/5.8/eloquent-mutators#array-and-json-casting

El tipo de conversión array es particularmente útil cuando se trabaja con columnas que almacenan JSON serializado.

Por ejemplo, si tu base de datos tiene un tipo de campo JSON o TEXT que contiene JSON serializado, al agregar el atributo array al arreglo de conversión, se deserializará automáticamente el atributo a una matriz PHP cuando acceda a él en su modelo Eloquent:

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'options' => 'array',
    ];
}

Una vez que se define la conversión, puede acceder al atributo options y se deserializará automáticamente de JSON a una matriz PHP. Cuando establece el valor del atributo de options, la matriz dada se serializará automáticamente en JSON para su almacenamiento.

$user = App\User::find(1);

$options = $user->options;

$options['key'] = 'value';

$user->options = $options;

$user->save();

Muy bien, esto es como hacer un json_encode($something) y posteriormente un json_decode($something, true). Laravel puede hacerlo automáticamente por ti.

Cabe señalar que, cuando se define la conversión a array, no necesitas hacer json_encode o json_decode. Cuando desees insertar, simple debes hacer:

$user->update([
  'options' => [] // el contenido de mi array
]);

Laravel hará el resto.

Cuando desees obtener datos del campo options, realiza:

$user->options;

Y obtendrás una matriz.


Siguiente entrada

¿Cómo usar webhooks de Mailchimp?

Los webhooks en Mailchimp se usan para recopilar información sobre los cambios en una lista o audiencia a medida que ocurren.

Te puede interesar

¿Cómo configurar Jekyll en GitLab Pages?

GitLab Pages es un servicio para crear y alojar un sitio web gratis para tus proyectos, donde es posible utilizar generadores de sitios...

¿Cómo hacer casting de Array & JSON en un Laravel Model?
Compartir