Вы здесь

В hook_node_form_alter() выяснить термины отмеченные в профиле юзера. Как правильно составить запрос entity_id = $user->uid ?

-1

У меня не получается правильно обратиться к полю по id юзера в запросе entityfieldquery.
В профиле юзер отметил в поле Компании термины таксономии.
Мне нужно на странице добавления ноды отобразить те компании в поле Новость Компании, которые отмечены у юзера в профиле.
Во-первых я не знаю как это сделать с помощью функции друпала (обрезать массив терминов $form['field_company_news'] ), поэтому делаю просто через пхп.
Мне нужно правильно составить запрос.
Вот как выглядит таблица field_data_field_companies:
http://itmages.ru/image/view/2497763/a49162d6

На данный момент у меня получилось только получить список всех пользователей и в этом массиве нет принадлежащих им терминов, хотя у всех есть отмеченные.. Также если делать условие id термина то он отображает список пользователей, а мне наоборот надо - по id юзера отобразить список терминов.

Вот как я пишу запрос, желая получить массив компаний, которые отмечены в профиле пользователя в этом поле:

$query = new EntityFieldQuery();
    $term_entities = $query
      ->entityCondition('entity_type', 'user', '=')
      ->entityCondition('bundle', 'user')
      ->fieldCondition('entity_id',$user->uid, '=') // if user has access
      ->execute();

На это он пишет:
EntityFieldQueryException: Неизвестное поле: entity_id в функции EntityFieldQuery->addFieldCondition() (строка 783 в файле includes/entity.inc).
тут я видел как пользоваться, но мне не помогло: https://www.drupal.org/node/1343708
Как исправить строку:
->fieldCondition('entity_id',$user->uid, '=') // if user has access
пробовал и entity и user_id и entity, id по-всякому.

Версия Drupal: 
7.x
Связанные проекты: 
Entity API
Вопрос задан 27.04.2015 - 14:51

Удалил ответ, сохранив его копию вам тут: http://pastebin.com/DjVqJu58
Впредь используйте форму ответ, только для ответа на свой вопрос. Т.е. если вы сами решили проблему, пишете ответ с решением, и помечаете его как решение.

Комментарий оставлен 28.04.2015 - 08:28

Ответы

0

https://api.drupal.org/api/drupal/includes!entity.inc/function/EntityFie...

метод fieldCondition()

параметры:
$field: Машинное имя поля.

$column: Имя колонки таблицы поля, по значениям которой будет производиться сравнение.

$value: Значение для проверки.

$operator: Оператор.

...

Какой из этих параметров может вызывать вопросы?

$query = new EntityFieldQuery();

$result = $query
  ->entityCondition('entity_type', 'user')
  ->fieldCondition('field_companies', 'entity_id', $user->uid, '=')
  ->execute();
Ответ дан 27.04.2015 - 15:45
Аватар пользователя drupby
drupby
456
0

в моем блоге есть решение с модулем. называется модуль profile_taxonomy_on_node_addition

Ответ дан 10.05.2015 - 17:21