sql >> Database teknologi >  >> RDS >> PostgreSQL

doktrin JSON-kolonnen i postgresql gemmer objekter eller arrays med de samme data

Gale rekvisitter til @Dave Redfern på Slack, der påpegede mit problem. Når du passerer en indekseret matrix, der ikke er nul, bliver den afbrudt som et objekt.

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",
])));

output vil være:

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

Så rettelsen er enkel, jeg er min sætter:

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

Fremover er det også en bedre praksis at bruge databaserelationer til rollerne. Det er ikke sjovt at søge efter JSON-data, men i en join er standardpraksis.




  1. MySql:Begræns opdateringstilladelse på én kolonne i én tabel

  2. Sådan får du streng efter karakter orakel

  3. Hvordan indsætter man en fil i Oracle-databasen?

  4. Få prisdata for et produkt, der kan reserveres, med datointervaller i WooCommerce