Вы здесь

Получить список терминов, которые используется в поле.

1

Есть ноды типа дилеры (dealers), есть словарь таксономии города (city).
У дилера есть поле field_city, в котором указывается ссылка на термин из словаря города.
Как просто получить список терминов из словаря город, которые хоть раз были использованы в поле field_city?

Версия Drupal: 
7.x
Вопрос задан 13.04.2015 - 15:59

Ответы

4
$tids = db_query("
  SELECT field_city_tid
  FROM {field_data_field_city} 
  GROUP BY field_city_tid
")->fetchCol();
Ответ дан 13.04.2015 - 16:04
Аватар пользователя xandeadx
xandeadx
1542

Спасибо. Работает. Я пытался сделать сложнее через EntityFieldQuery.

Комментарий оставлен 13.04.2015 - 16:12

Если нода не опубликована, или поле используется не только в одном месте, этот запрос отрабатывает не правильно.

Комментарий оставлен 13.04.2015 - 17:39

вы не знаете sql? бегом гуглить :)

$tids = db_query("
  SELECT field_city_tid
  FROM {field_data_field_city} f
  LEFT JOIN {node} n ON n.nid = f.entity_id
  WHERE f.bundle = 'dealers' AND n.status = 1
  GROUP BY field_city_tid
")->fetchCol();
Комментарий оставлен 13.04.2015 - 18:31

нет, только js и php. =) спасибо.
Прав был Дубовской.

Комментарий оставлен 13.04.2015 - 22:12

У тебя тут ошибка, когда id в таблице совпадает с другим entity.

<?php
$tids = db_query("
  SELECT field_city_tid
  FROM {field_data_field_city} f
  LEFT JOIN {node} n ON n.nid = f.entity_id
  WHERE f.type = 'dealers' AND n.status = 1
  GROUP BY field_city_tid
")->fetchCol();
Комментарий оставлен 13.04.2015 - 22:40