Criação de relação através da importação de CSV

Olá,

possuo um arquivo que descreve relações entre os objetos a partir da coluna “ITEMDE”, relacionando com a coluna “CODIGO”. Abaixo um caso de teste para o problema que irei descrever:

"ALTURA","AQUISICAO","CODIGO","COLECAO","COMPRIMENTO","CONSERVACAO","DATADOACAO","DATAEPOCA","DESCRICAO","INTERVENCAO","ITEMDE","LARGURA","LOCALIZACAO","MARCAS","NOME","OBSERVACOES","PAIS","PROCEDENCIA","PROFUNDIDADE","REFERENCIAS","TIPOLOGIA"
"56.50","","MJFL-2013-14-0022.001","Nutrição e Dietética","","","","","","|","","28.00","Reserva técnica","","Suporte para lixeira","","","","30.50","",""
"24.00","","MJFL-2013-14-0022.002","Nutrição e Dietética","","","","","","|","MJFL-2013-14-0022.001","28.00","Reserva técnica","","Lixeira","","","","24.50","",""


O campo “ITEMDE” está relacionado ao campo “CODIGO”.

A importação do arquivo e criação dos itens ocorre sem erros.

O problema está justamente na criação da relação entre os itens, já que revisando no banco de dados é possível encontrar a relação ambos os itens após importar o CSV, mas ela não está sendo considerada no item quando ele é exibido.

meta_id post_id meta_key meta_value
111732 11290 367 MJFL-2013-14-0022.001
111996 11340 10762 MJFL-2013-14-0022.001

meta_key:367 = Codigo
meta_key:10762 = Itemde

post_id post_title
11290 Suporte para lixeira
11340 Lixeira

Essa relação só vai ser completa quando eu edito manualmente o objeto e crio a relação, a partir desse momento os metadados ganham mais uma linha sobre essa relação: “meta_key:new_value”

meta_id post_id meta_key meta_value
111732 11290 367 MJFL-2013-14-0022.001
111996 11340 10762 MJFL-2013-14-0022.001
112096 11349 new_value a:1:{i:0;s:21:“MJFL-2013-14-0022.001”;}

A partir disso a relação começa a existir no item da coleção, mesmo que o meta_key:10762 não tenha sofrido nenhuma alteração.

Já tentei as seguintes maneiras:

  • Importar os dois itens juntos, com a ordem de hierarquia dentro do arquivo, da mesma maneira como o exemplo acima
  • Importar primeiro o item “pai” e depois importar o item “filho” - o item “pai” estava com o status de publicado
  • Mesmo do item anterior, porém com a coluna “ITEMDE” com o nome de “ITEMDE|relationship”

Há algo que estou perdendo no cabeçalho do CSV?

Pela documentação entendo que não é necessário colocar o valor relationship no nome da coluna, sendo isso necessário somente quando deseja-se criar o metadado junto com a importação.

Olá @gabriel.ramos tudo bem?

Sim esse cabeçalhos são aplicados apenas quando você seleciona para criar um novo metadado, aqui tem um detalhe que o metadado de relacionamento não pode ser criado usando a importação, pois ainda não temos uma boa forma de configurar a coleção relacionada no metadado.

Sobre a sua duvida principal de como fazer os relacionamento usando a importação de um CSV, acho que primeiramente é interessante citar que para um valor de metadado do tipo relacionamento ser concretizado no Tainacan é preciso que o ID do item seja salvo na tabela postmeta. Esse ID é uma informação gerada automaticamente pelo wordpress. Dessa forma é expressamente restrito que para fazer um relacionamento o item a ser relacionado já deva existir antes da importação.

Exemplificando o processo, tenho uma coleção de teste com 20 itens na qual adicionei um metadado de Relacionamento para a própria coleção e exportei os dados para um CSV:

dd
Aqui você pode reparar a presença de uma coluna especial (colunas especial na importação CSV) contendo os IDs dos item é exibida na primeira coluna.

Se eu importar esse mesmo arquivo com a presença da special_item_id o processo de importação vai tentar atualizar os itens da coleção que tenha os ID correspondentes aos que estão presente no arquivo. Para então eu atualizar o metadado de relacionamento eu devo informa o ID do item correspondente. Por exemplo que que o item com o título: “Title 19” seja relacionado com o item com o título “Title 0”, devemos fazer algo do tipo:

Ao executar essa importação devo obter o seguinte resultado:

Acho que é isso :laughing:
Qualquer questão só perguntar

2 curtidas