sql >> データベース >  >> RDS >> PostgreSQL

postgresqlのdoctrineJSON列は、同じデータのオブジェクトまたは配列を格納しています

    私の問題を指摘してくれたSlackの@DaveRedfernに狂った小道具。ゼロ以外のインデックス付き配列を渡すと、オブジェクトとして解釈されます。

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

    出力は次のようになります:

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

    したがって、修正は簡単です。私のセッターです:

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

    今後は、データベースとロールの関係を使用することもお勧めします。 JSONデータによる検索は楽しいものではありませんが、結合では標準的な方法です。




    1. SETOFレコードを返すPostgres関数を呼び出す方法は?

    2. 外部からDockerコンテナでPostgresqlに接続する

    3. SQL Server:XPATHクエリが失敗する

    4. Oracleでトレースファイルの統計を理解する方法。 CPU、経過時間、クエリなど