Merhaba,
Bir json nesnesini jsonb olarak veritabanına yazdığımız zaman anahtar sıralamasını korumuyor.
Sonrasında bu yapıyı karşılaştırmak istediğimde eşleştirme sağlanamadığı için, istediğim kontrolü sağlayamıyorum.
Bu düzeni nasıl sağlayabilirim ?
İyi çalışmalar.
https://dev.mysql.com/doc/refman/8.0/en/json.html
Dökümantasyonda aramaları daha verimli hale getirmek için key leri de sıralar diyor.
Laravel de casting işlemi uygulayarak field in array olarak gelmesini sağlar , accessor içinde de sıralamayı küçükten>büyüğe veya ihtiyacınıza göre düzenlerseniz sanırım işinizi görür.
coder2
Gelen arrayleri ksort() ile sıralamayı denedim de. Burada da multi dimensional array ler sıkıntı yaratıyor. Çünkü her içerik sıralaması değişmiş.
YalcinSahin
Belki doğru kullanım değildir ama ben field tipini text olarak tutup (json olarak değil), dizileri json_encode edip burada saklıyorum. Sonra accessor da decode ediyorum.
Text olarak tutmak sıkıntı yaratmaz mı ? Siz şu ana kadar multi dimensional array larda sıkıntı yaşadınız mı ?
YalcinSahin Multi dimensional array tutmamda sıkıntı olmadı. Sıralama da değişmiyor text field olduğu için. Fakat json değer içinde arama veya eşleştirme gibi işlemler yapmak gerekirse MySql özelliklerini kullanamamak var işin ucunda.
coder2 Merhaba,
Aynen ben de text olarak veriyi tutma kararı aldım. Zaten amacım bir önceki veri ile aynı olup olmadığını kontrol etmek.
Text eklerken de json_encode edip ekliyorum.
Json olarak keyleri sıralamalarının mantığını öğrenmek de istedim. Dediğiniz gibi mysql nimetlerinden yararlanamıyor olacağız.
YalcinSahin
{
"x": 1,
"y": 2,
"str" : "{\"x\":1,\"y\":2}"
}
Laravel Türkiye Forumları, ücretsiz forum uygulaması Flarum ile yapılmıştır.