Laravel’de MySQL JSON Sütunlarıyla Çalışmak

sinem ünal
2 min readJan 6, 2021

--

Merhaba,
Diyelim ki; bir Laravel e-ticaret uygulamasında, ürünlerimizi depolamak istiyoruz. Ancak veriler çok fazla ve alanlar değişkenlik gösterebilir. Böyle durumlarda, her türlü verileri Json veri tipi kullanarak saklamak oldukça faydalı olacaktır.

!Geliştirme ortamınızda MySQL 5.7.8 veya üstünün kurulu olması gerekir.

Bir sütunu JSON tipinde oluşturmak için, Laravel migration işleminde yapmamız gereken tek şey-> json () yöntemini kullanmaktır:

Modelimize de (app /Models/ Products.php) ‘meta’ sütununu JSON’dan bir diziye otomatik olarak dönüştürmesini söylememiz gerekir.

Artık $producst->meta dizi olarak alacağımız için json_decode() yapmamıza gerek kalmayacak.

Örnek verimizi eklemek için Laravel’in sunduğu Seed sınıflarını kullanalım. Seed sınıfı için, tablomuzun ve modelimizin hazır olması gerekli. Yeni bir seeder oluşturmak için aşağıdaki kodu yazalım;

php artisan make:seeder ProductsTableSeeder

Oluşturduğumuz her Seeder’a Database/seeder klasörü altından ulaşabiliriz. Tablomuza sütun olarak eklemek istediğimiz her bir veriyi, run metodu altında, create fonksiyonu kullanarak yazalım.

DatabaseSeeder sınıfına oluşturduğumuz Seeder’ı ekleyelim ardından

php artisan db:seed — class=ProductsTableSeeder

Komutunu çalıştıralım.

Artık Json tipinde tutulan verinin içinden herhangi bir alanı almak istediğimizde;

$products = Product::where('meta->color', 'red')->get();

Ya da güncellemek istediğimizde;

$products = Product::where('id',1)->update(['meta->status' => false]);

Kolaylıkla işlem yapabiliyoruz.

--

--

sinem ünal
sinem ünal

No responses yet