首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将单个值实体引用字段与多值实体引用字段进行比较

将单个值实体引用字段与多值实体引用字段进行比较
EN

Drupal用户
提问于 2020-04-28 07:18:35
回答 1查看 447关注 0票数 1

文章实体有一个无限的多值分类法参考字段field_article_countries,引用分类法词汇表Countries,用户实体有一个单一值分类法参考字段field_user_countries,该字段引用相同的分类法词汇表Countries

通过编程,并与一篇特定的文章相比,我希望将具有field_user_countries值=的所有用户加载到多值分类法参考字段field_article_countries中可用的值之一。

示例:假设Article "ABC"具有值的field_article_countries

  • 巴黎
  • 西班牙
  • 伦敦
  • 意大利

User "A"field_user_countries设置为:

  • 西班牙

User "B"field_user_countries设置为:

  • 意大利

User "C"field_user_countries设置为:

  • 土耳其

我希望以编程的方式,并基于Article "ABC",只加载用户A和用户B。

Below是我的代码:

代码语言:javascript
复制
// Get in array, a list of all "Article Countries" available for the loaded article.
$Article_Countries = $article->field_article_countries->getString();

    // Get Entity Manager to build your query
    $storage = \Drupal::entityTypeManager()
      ->getStorage('user');

    // Get all Users satisfing your conditions
    // For Condition Parameters @See: https://www.drupal.org/docs/8/api/database-api/dynamic-queries/conditions
    $uids = $storage->getQuery()
      ->accessCheck(FALSE)
      //->condition1
      //->condition2
      ->condition('field_user_countries', $Article_Countries, 'IN')
      ->execute();

    // Load all User entities according to their IDs
    $users = \Drupal\user\Entity\User::loadMultiple($uids);

    // Loop through loaded users.  
    foreach ($users as $user) {

    // Do something here.

}

The问题是只加载了一个用户,而不是所有用户!

知道我的代码有什么问题吗?

EN

回答 1

Drupal用户

回答已采纳

发布于 2020-04-28 09:42:06

$Article_Countries = $article->field_article_countries->getString();

这将返回一个字符串

->condition('field_user_countries', $Article_Countries, 'IN')

从医生那里,带有INcondition接受一个数组。

因此,您需要$Article_Countries作为实体ID的数组。我的第一个想法是使用$article->field_article_countries->referencedEntities()来获取一个对象数组,然后让它们构建一个ID数组,但这有点过于周密了。因此,我寻找了一种更整洁的方法,并找到了这样的方法:http://drupal.stackexchange.com/a/207715/89581,它建议:

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

票数 2
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/293196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档