Update Data Dengan Kolom JSON di Laravel 5.3

Dipublikasikan oleh El Cicko pada

update data dengan kolom json di laravel 5 3

Pada artikel kali ini saya akan sedikit membahas fitur terbaru dari Laravel Framework versi 5.3 yaitu fitur where() dan update() pada kolom yang berisi JSON. Ya, pada fitur ini memungkinkan kita untuk melakukan pencarian dan juga melakukan update data dengan kolom JSON di Laravel.

Lebih jelasnya dengan fitur ini kita bisa menyimpan data berupa format JSON di kolom table MySQL dan melakukan pencarian dan update data secara sekaligus tanpa harus mengolah datanya dengan json_encode terlebih dahulu.

Sebenarnya fitur ini sudah ada sejak Laravel versi 5.0 namun karena waktu itu data JSON yang kita simpan masih berupa text atau string.

Semenjak MySQL merilis versi 5.7 dan memperkenalkan tipe data JSON untuk kolom table, kita bisa memanfaatkan fitu update data dengan kolom JSON di Laravel dengan maksimal dan efisien.

Update Data Dengan Kolom JSON di Laravel #Schema

Untuk penjelasannya sekarang kita akan membuat sebuah contoh kasus. Asumsikan bahwa kita memiliki struktur table seperti pada syntax Schema berikut ini :

class UserTable extends Migration
{
    public function up()
    {
        Schema::create('user', function (Blueprint $table) {
            $table->increments('id');
            $table->string('username');
            $table->string('password');
            $table->json('biodata');
            $table->timestamps();
        });
    }
}

Pada schema diatas kita memiliki struktur table seperti ini

  • id
  • username (string)
  • password (string)
  • biodata(json)

pada kolom biodata kita set tipedatanya sebagai JSON, jadi pada table tersebut kita dapat mengisi biodata dari user tersebut. isi dari kolom biodata dengan tipe data JSON ini sebagai berikut :

{
    "nama": "Mamat",
    "kota": "Bandung",
    "jenis_kelamin": "Pria"
}

Dari syntax JSON diatas kita dapat melihat bahwa isi dari kolom biodata adalah data personal dari user yang kita pilih.

Baca Juga : Menggunakan Fungsi Where Collection di Laravel Framework

Update Data Dengan Kolom JSON di Laravel #where()

Untuk melakukan pencarian data untuk kolom JSON tersebut kita dapat menggunakan fitur where() pada Query Builder, contoh query yang kita gunakan adalah sebagai berikut :

$users= DB::table('user')->where('biodata->jenis_kelamin', 'Pria')->get();

Mudah kan? pada query diatas, kita bisa melihat bahwa Laravel akan langsung mengenali kolom biodata yang memiliki tipe data JSON sebagai JSON Object sehingga kita hanya perlu mencari index dan value dari object tersebut untuk melakukan pencarian data.

Update Data Dengan Kolom JSON di Laravel #update()

Nah, sama seperti contoh sebelumnya, kita tinggal melakukan pencarian lalu kita gunakan fitur update() yang ada pada Query Builder untuk mengubah data yang ada pada kolom biodata tersebut.

DB::table('user')->where('id', 1)->update(['biodata->jenis_kelamin'=>Perempuan']);

Mudah kan? sekarang kita tidak perlu lagi untuk membuat kolom baru di database.

Perlu diingat bahwa fitur ini baru bisa berjalan dengan baik pada MySQL versi 5.7. MariaDB tidak memiliki fitur JSON Column sedangkan PostgreSQL dan SQLite belum bisa memanfaatkan fitur JSON Column ini dengan baik.

Jadi pertimbangkan untuk menggunakan MySQL 5.7 untuk bisa menggunakan JSON Column.

Sekian dulu tutorial dari saya tentang cara update data dengan kolom JSON di Laravel, silahkan dicoba dan semoga bermanfaat 😀


El Cicko

Nama saya Riky Fahri Hasibuan, Saya yang biasa nulis di blog ini. Blog ini adalah sarana dokumentasi dari apa yang saya kerjakan dan tidak ada salahnya juga saya sebarkan. Jika artikel di blog bermanfaat, kamu bisa memberikan apresiasi pada blog ini dengan memberikan donasi pada blog ini.

0 Komentar

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *