sql >> Database >  >> RDS >> PostgreSQL

doctrine JSON-kolom in postgresql slaat objecten of arrays van dezelfde gegevens op

Gekke rekwisieten voor @Dave Redfern op Slack die op mijn probleem wees. Bij het passeren van een niet-nul geïndexeerde array, wordt deze geïnterpreteerd als een object.

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 zal zijn:

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

Dus de oplossing is eenvoudig, ik ben mijn zetter:

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

In de toekomst is het ook een betere gewoonte om databaserelaties met de rollen te gebruiken. Zoeken op JSON-gegevens is niet leuk, maar in een join is de standaardpraktijk.




  1. MySQL:Total GROUP BY MET ROLLUP nieuwsgierigheid

  2. MySQL:Snel overzicht van de soorten joins

  3. Tutorial over SQL (DDL, DML) over het voorbeeld van MS SQL Server-dialect

  4. 2PL, rigoureus versus strikt model, is er enig voordeel?