Вы здесь

Как в запросе к базе добавить условие с tid термина?

1

Есть код:

$query = \Drupal::database()->select('node_field_data', 'n')
        ->fields('n', array('nid', 'title'))
    ->condition('n.type', 'article')
        ->condition('n.title', '%' . $string . '%', 'LIKE')
        ->range(0, 10);

$result = $query->execute();

Помогите добавить в этот код следующие условие: чтобы выбирались только ноды с термином таксономии "Автомобили" (поле field_choice_category) id термина 24.

Версия Drupal: 
8.x
Категория: 
Database API
Вопрос задан 15.11.2016 - 16:56

$query = \Drupal::database()->select('node_field_data', 'n')
->fields('n', array('nid', 'title'))
->fields('tx',array('field_choice_category_target_id'))
->leftjoin('tx','node__field_choice_category','n.nid = tx.entity_id')
->condition('n.type', 'article')
->condition('n.title', '%' . $string . '%', 'LIKE')
->condition('tx.field_choice_category_target_id, 24);
->range(0, 10);

$result = $query->execute();

Где-то так. Чтобы быстрее было - строй вьюс и смотри код запроса

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

Ответы

0

Вам нужно использовать объединение таблиц, чтобы добраться до нужных вам полей.
Если собираетесь делать выборку по имени термина, то объединяйте node(node_field_data)->field_choice_category(taxonomy_index)->taxonomy_term_field_data методом join()

Но для работы с сущностями и связанными полями есть EntityQuery - смотри примеры https://www.sitepoint.com/drupal-8-version-entityfieldquery/ и https://docs.acquia.com/article/lesson-61-entity-queries-and-loading-ent...

Ответ дан 16.11.2016 - 13:37
Аватар пользователя drupby
drupby
456