Zaman zaman veritabanına Json kaydetmemiz gerekebilir. Bu gibi durumlarda veritabanına kaydetmeden önce verimizi json_encode
ile json’a çevirip; erişirken de json_decode
ile tekrar arraye çevirmemiz gerekiyor. Fakat Laravel’de bunun için kısa bir yöntem var.
Dökümanda “Array & Json Casting” (https://laravel.com/docs/5.5/eloquent-mutators#array-and-json-casting) bölümünde de belirtildiği gibi, Model dosyanıza yoksa protected $casts
değişkeni ekleyerek, veri alanınızın json olduğunu belirtmeniz yeterli.
<?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',
];
}
Kullanımı ise oldukça pratik ve json_encode json_decode methodlarına ihtiyaç duyulmuyor.
$user->options = [‘a’ => ‘b’];
$user->save();
echo $user->options[‘a’];
//b
Yukarıda gördüğünüz gibi, veriyi kaydederken array olarak kaydediyorsunuz. Erişirken de array olarak erişiyorsunuz. Aradaki işlemleri Eloquent sizin için tamamlıyor.