PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

kolom doktrin JSON di postgresql menyimpan objek atau array dari data yang sama

Alat peraga gila untuk @Dave Redfern di Slack yang menunjukkan masalah saya. Saat melewati larik terindeks bukan nol, larik tersebut ditafsirkan sebagai objek.

dump(json_encode([
    0 => "ROLE_SITE_DIRECTOR", 2 => "ROLE_TRANSLATOR", 1 => "ROLE_DATA_ENTRY",
]));
dump(json_encode(array_values([
    0 => "ROLE_SITE_DIRECTOR", 2 => "ROLE_TRANSLATOR", 1 => "ROLE_DATA_ENTRY",
])));

keluarannya adalah:

"{"0":"ROLE_SITE_DIRECTOR","2":"ROLE_TRANSLATOR","1":"ROLE_DATA_ENTRY"}"
"["ROLE_SITE_DIRECTOR","ROLE_TRANSLATOR","ROLE_DATA_ENTRY"]"

Jadi perbaikannya sederhana, saya setter saya:

$this->roles = array_values($roles);

Ke depan, ini juga merupakan praktik yang lebih baik untuk menggunakan hubungan basis data ke peran. Mencari berdasarkan data JSON tidak menyenangkan, tetapi bergabung adalah praktik standar.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tangani WAKTU DENGAN ZONA WAKTU dengan benar di PostgreSQL

  2. Bergabung dengan fungsi set-returning (SRF) dan akses kolom di SQLAlchemy

  3. Menguji aplikasi GeoDjango dengan database PostGIS

  4. Mengumumkan repmgr 2.0

  5. Permintaan rekursif postgres dengan row_to_json