drupal9

Cargando las relaciones con un grupo apartir de una entidad en código en Drupal 9 y 10

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:

grouprelationship::loadbyentity()

  • 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:

  1. Es que estamos cargando al usuario en la variable $user.
  2. Con $array_group_relationship = GroupRelationship::loadByEntity($user) estamos cargando las relaciones del usuario en un array.
  3. 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

Deseo más información

O también puedes comunicarte con nosotros.

por whatsapp por whatsapp

Añadir nuevo comentario

Me gustaría más información sobre:

CAPTCHA