Tengo un tipo de contenido que tiene un campo de referencia de entidad que permite a los usuarios agregar múltiples términos de taxonomía en ese campo. Estoy intentando realizar consultas que captan nodos que tienen un conjunto específico de términos de taxonomía dentro de ese campo.
Usar un valor en ese campo funciona bien, así.
$query = \Drupal::entityQuery('node')
->condition('status', NODE_PUBLISHED)
->condition('type', 'custom_type')
->condition('custom_taxonomy', 2)
->sort('field_last_name', DESC);
Donde 2 es la identificación del término que estoy buscando. Sin embargo, cuando intento buscar nodos que contienen dos términos específicos como este,
$query = \Drupal::entityQuery('node')
->condition('status', NODE_PUBLISHED)
->condition('type', 'custom_type')
->condition('custom_taxonomy', [2,8])
->sort('field_last_name', DESC);
Recibo el error
Número de parámetro no válido: el número de variables enlazadas no coincide con el número de tokens:
También he intentado
$query = \Drupal::entityQuery('node')
->condition('status', NODE_PUBLISHED)
->condition('type', 'custom_type')
->condition('custom_taxonomy', [2,8], 'IN')
->sort('field_last_name', DESC);
Lo que no falla, pero no proporciona los resultados previstos. Muestra todos los nodos que tienen el término 2 O el término 8. En lugar del término 2 Y el término 8 según lo previsto. ¿Cómo realizaría una consulta que verifique si un nodo tiene múltiples valores específicos en un campo de referencia de entidad?
$and->condition('custom_taxonomy', [2], 'IN')
,$and->condition('custom_taxonomy', [8], 'IN')
'IN'
. Lo que hace la diferencia son los dos grupos AND separados.Para realizar consultas complejas como solicitó, deberá utilizar un grupo de condiciones y consultar el delta.
Consulte la documentación de QueryInterface :: condition .
fuente
fuente