Penggunaan Field JSON Laravel

By | July 22, 2019

Techwebdaily – Penggunaan Field JSON semakin populer semenjak di dukung resmi oleh Mysql versi 5.7.8. Bahakan package spatie laravel menggunakannya. Berikut contoh penggunaan field JSON di laravel.

Katakanlah kita mempunyai projek ecommerce dan ingin memyimpan produk dengan beberapa attribute seperti warna, ukuran, dsb. Tapi setiap produk tersebut tidak selalu membutuhkan attribute tersebut, jadi setiap produk optional untuk pemilihan attribute nya. Bagaimana cara kita menyimpaannya ? mungkin field JSON bisa menjadi salah satu alternative untuk menyimpannya. Berikut contoh penggunaan nya

Kita mempunyai form seperti berikut

*note : untuk menyederhanakan nya, saya tidak menggunakan javascript untuk dynamic add/remove field nya

1. Migration dan Model

untuk membuat json field, pada migration kita menggunakan json() method

Selanjutnya, kita membuat model dengan nama Product. untuk cast otomatis field properti di tambahkan seperti berikut :

jadi kita tidak perlu untuk melakukan json_decode()  karena akan berubah otomatis menjadi array.

2. Form

Pada form ini kita menggunakan 5 field properties, user dapat mengisi salah satu atau semuanya.

kalian dapat melihat pada @for di blade untuk penggunaan properties nya

3. Menyimpan Data

pada method store() di controller ProductController bisa di tulis seperti ini

Kita bisa menambahkan validasi pada method di atas, tapi kita fokus nya sekarang di Field JSON nya.

dan setelah save, pada database akan terlihat seperti ini :

Kita mempunyai satu masalah sekarang, pada saat simpan data kita tidak memfilter data yang kosong. jadi pada saat menyimpan data, terdapat value yang null seperti ini

untuk mengatasi masalah tersebut kita dapat menggunakan setter di model Product tadi. caranya seperti ini :

*note : mungkin cara ini tidak efektif dan kurang elgant

4. Menampilkan Properties

Pada tabel product kita akan menampilkan seperti berikut :

untuk menampilkaanya kita menggunakan @foreach pada index blade nya

5. Edit/Update Produk

Form edit mempunyai struktur yang sama seperti add tadi, hanya menambhakan value dari masing-masing field. kurang lebih seperti ini blade nya :

letakkan di edit blade nya.

dengan update() method pada controller ProductController , kita menambahakan kode berikut :

Sederhana bukan ?