Passei algumas horas analisando a documentação e os exemplos do array INSERT do PostgreSQL. Mas estou ficando cada vez mais confuso.
Eu criei a tabela word_mash_word_cube_definitions
onde column definition
é type text[]
.
Quando criei a coluna eu usei text[][]
. Mas \d+
mostra como text[]
.
Em PHP o array é:
$design[1] = [ 'letter' => null , 'direction' => 'down' , 'x-axis' => 7 , 'y-axis' => 3 ];
$design[2] = [ 'letter' => null , 'direction' => 'left' , 'x-axis' => 7 , 'y-axis' => 4 ];
$design[3] = [ 'letter' => null , 'direction' => 'up' , 'x-axis' => 6 , 'y-axis' => 4 ];
$design[4] = [ 'letter' => null , 'direction' => 'left' , 'x-axis' => 6 , 'y-axis' => 3 ];
$design[5] = [ 'letter' => null , 'direction' => 'down' , 'x-axis' => 5 , 'y-axis' => 3 ];
$design[6] = [ 'letter' => null , 'direction' => 'down' , 'x-axis' => 5 , 'y-axis' => 4 ];
Estou com o objetivo de armazenar toda a matriz em 1 linha. Mas não sei se isso é possível.
Alguém poderia me mostrar o correto
INSERT INTO word_mash_word_cube_definitions ( definition ) VALUE ( ??? )
Eu estou perdido.
Se você precisar armazenar matrizes com chave/associativas, em vez de uma
text[]
coluna, use JSON. Defina o tipo de coluna comojsonb
e usejson_encode($design)
em PHP e armazene a string resultante. Quando você ler a linha, usejson_decode($design, true)
para transformá-la novamente no array PHP original.Armazená-lo dessa maneira fornece validação de formato e funções do PostgreSQL para consulta dentro do JSON.
Existem limitações para esse método, especialmente em torno da codificação de caracteres, que se tornarão importantes se você, digamos, adicionar suporte a idiomas estrangeiros ao seu aplicativo.