Para saber por medio de código a que grupo o grupos pertenece cierta entidad, como un usuario o un nodo debemos usar GroupRelationship::loadByEntity().
La función GroupRelationship::loadByEntity() en Drupal 9 está relacionada con el módulo de Grupos (Group). Este módulo permite la organización y gestión de contenido en grupos. La función loadByEntity() sugiere que se está cargando una relación de grupo basada en una entidad específica.
<?php
use Drupal\user\Entity\User;
use Drupal\group\Entity\GroupRelationship;
$user = User::load(8);
$array_group_relationship = GroupRelationship::loadByEntity($user);
print_r($array_group_relationship);
exit;Entre otros valores lo que nos daría esta impresión de print_r es:

- Esto nos carga TODAS las relaciones con los grupos que tenga la entidad y con eso nos muestra el id y otros datos de cada grupo al que pertenece el usuario (de la misma forma funcionaría para una entidad de nodo)
 - Si quisieramos mostrar todos los id's de todos los grupos a los que pertenece nuestro usuario, deberíamos hacer un foreach sobre $array_group_relationship.
 - Para obtener sólo el id del primer grupo presente en el array $array_group_relationship podemos hacerlo de esta forma:
 
        $array_group_relationship = GroupRelationship::loadByEntity($node);
        if (!empty($array_group_relationship)) {
          $group_id = reset($array_group_relationship)->getGroup()->id();  
        }Con lo que finalmente tendríamos el siguiente código:
<?php
use Drupal\user\Entity\User;
use Drupal\group\Entity\GroupRelationship;
$user = User::load(8);
$array_group_relationship = GroupRelationship::loadByEntity($user);
if (!empty($array_group_relationship)) {
  $group_id = reset($array_group_relationship)->getGroup()->id();
}Lo que estamos viendo en este código:
- Es que estamos cargando al usuario en la variable $user.
 - Con $array_group_relationship = GroupRelationship::loadByEntity($user) estamos cargando las relaciones del usuario en un array.
 - Si la relación no está vacia, entonces obtenemos sólo el primer elemento del array y con el método ->getGroup()->id() cargamos el id del usuario.
 
En Groups 8.x-1.6, 8.x-1.4 o versiones anteriores
Debemos usar GroupContent::loadByEntity()
use Drupal\group\Entity\GroupContent;        // * Group Content es una entidad que sirve para establecer las relaciones entre nodos y grupos, ya que un nodo puede estar en varios grupos y un grupo puede tener varios nodos.
        // * Un Group Content no es un grupo, ni tampoco es un nodo, es una relación entre un grupo y un nodo.
        // * Carga todas las relaciones con todos los grupos asociados con un nodo específico
        $group_content_array = GroupContent::loadByEntity($node);
        
        //Si el nodo está asociado con múltiples grupos, esta línea obtendrá solo el primero de ellos.
        $group_content = current($group_content_array);
        
        //Aquí se verifica si la variable $group_content no esta vacia para poder recuperar el grupo.
        if (!empty($group_content)) {
        
          $group = $group_content->getGroup();
          
          //Teniendo el grupo ya se puede recuperar cualquier campo perteneciente al mismo.
          $form_hubspot = $group->get('field_blog_hubspot')->value;
        }
Me pareció interesante el artículo
Añadir nuevo comentario