Skip to content

Instantly share code, notes, and snippets.

@pmichelazzo
Created February 11, 2022 05:37
Show Gist options
  • Save pmichelazzo/a254d348c7d349ee362056e26bd96233 to your computer and use it in GitHub Desktop.
Save pmichelazzo/a254d348c7d349ee362056e26bd96233 to your computer and use it in GitHub Desktop.
Snippets para trabalhar com entidades referenciadas (entity reference) em Drupal 9

Entidades Referenciadas em Drupal 8ˆ|9ˆ

Entidades referenciadas (entity reference) são, muitas vezes, aquilo que mais traz dores de cabeça para um dev Drupal. Aqui, alguns truques que podem economizar tempo e cabelos (se ainda os tem).

Recuperar somente os id's de entidades referenciadas em um campo

Sua entidade possui um campo que referencia outra entidade que possui diversas entidades relacionadas e você precisa somente dos id's.

Não precisa de um loop, basta:

$ids = array_column($entity->campo_de_referencia->getValue(), 'target_id');

O resultado é um array contendo todas os id's das entidades armazenadas em seu campo de referências.

Tem alguém ai?

Precisa saber se um campo de referência já possui entidades relacionadas? Faça como em qualquer outro campo:

$entidade->campo_referencia->isEmpty();

Adicionando referências

Precisa adicionar um novo id dentro de seu campo com referências? Simples:

$entidade->campo_referencia->appendItem(['target_id' => $um_id_qualquer]);

Cuidado: se o campo de referência já conter valores, o truque acima irá apagá-los e colocar um novo id no lugar. para evitar isso, faça:

$entidade->get('campo_referencia')->appendItem(['target_id' => $um_id_qualquer]);

O método get captura os valores existentes antes do método appendItem, adicionando o valor ao fim do array de ids.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment