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

Eleazar Resendez

Eleazar Resendez

September 19 — 2 mins 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:
<?php

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.

Y cuando desees obtener datos de campo de options, simplemente haz:

$user->options;

Y obtendrás una matriz.

laravel

Want to read similar posts?

Every two weeks I send a newsletter with the latest blog content.

Next post

¿Cómo usar webhooks de Mailchimp?

El concepto de WebHook es simple. Un WebHook es un callback (devolución de llamada) HTTP. Un HTTP POST que ocurre cuando algo sucede; Una si...

You might like it

¿Cómo recibir notificaciones en Slack desde una Laravel App?

Un poco de teoría:Los webhooks son una forma sencilla de publicar mensajes de fuentes externas en Slack. Utilizan solicitudes HTTP normales...

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