sql >> Databáze >  >> RDS >> PostgreSQL

doktrína Sloupec JSON v postgresql ukládá objekty nebo pole se stejnými daty

Šílené rekvizity @Dave Redfernovi na Slacku, který poukázal na můj problém. Při předávání nenulového indexovaného pole je interperováno jako 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",
])));

výstup bude:

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

Takže oprava je jednoduchá, můj setter:

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

V budoucnu je také lepší používat databázové vztahy k rolím. Vyhledávání podle dat JSON není zábavné, ale ve spojení je standardní postup.




  1. Odeberte všechny mezery z řetězce na serveru SQL Server

  2. Oracle získat řádek, kde se změnila hodnota sloupce

  3. lomítko před každým problémem s citací

  4. Neznámá tabulka v MULTI DELETE