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