Помогите запросом вытащить ноды определенного термина таксономии

Главные вкладки

Аватар пользователя tispoint tispoint 16 марта 2018 в 10:07

Я пытаюсь так, но не могу понять в чем ошибка.

<?php
$result
db_select('node''n');
$result->innerJoin('taxonomy_index','t','n.nid = t.nid');
$result->fields('n', array('nid''title'));
$result->fields('t',Array('tid'));
$result->condition('t.tid','315','=');
//$result->range(0, 10);
$result->execute();

foreach (

$result as $node) {
  
$items[] = array($node->nid$node->title$node->tid);
}
$header = array('ID''title','tid');
$output theme('table', array('header' => $header'rows' => $items));
echo 
$output;
?>

Лучший ответ

Аватар пользователя 3_14yavka 3_14yavka 16 марта 2018 в 10:38
1
<?php  $query db_select('node''n');
  
$query->innerJoin('taxonomy_index''t''n.nid = t.nid');
  
$query->fields('n', array('nid''title'));
  
$query->fields('t', array('tid'));
  
$query->condition('t.tid''315''=');
  
$result $query->execute()->fetchAll();
  foreach (
$result as $node) {
    
$items[] = array($node->nid$node->title$node->tid);
  }
  
$header = array('ID''title','tid');
  
$output theme('table', array('header' => $header'rows' => $items));
  echo 
$output;?>

Комментарии

Аватар пользователя 3_14yavka 3_14yavka 16 марта 2018 в 10:38
1
<?php  $query db_select('node''n');
  
$query->innerJoin('taxonomy_index''t''n.nid = t.nid');
  
$query->fields('n', array('nid''title'));
  
$query->fields('t', array('tid'));
  
$query->condition('t.tid''315''=');
  
$result $query->execute()->fetchAll();
  foreach (
$result as $node) {
    
$items[] = array($node->nid$node->title$node->tid);
  }
  
$header = array('ID''title','tid');
  
$output theme('table', array('header' => $header'rows' => $items));
  echo 
$output;?>
Аватар пользователя tispoint tispoint 4 апреля 2018 в 17:15

Добрый день, Виктория.
Извините за беспокойство, спрошу еще раз.
Мне по-прежнему требуется получить ноды с определенными терминами таксономии, только терминов сразу два одновременно. Что-то вроде этого: (термин1 or термин2) and термин3.

<?php
$query 
db_select('node''n');  
      
$query->innerJoin('taxonomy_index','t','n.nid = t.nid');
      
$query->fields('n',Array('nid','title'));
    
$query->fields('t',Array('tid'));
    
$db_and1 db_and()
          ->
condition('t.tid','323','=')
          ->
condition('t.tid','313','=');
    
$db_and2 db_and()
          ->
condition('t.tid','349','=')
          ->
condition('t.tid','313','=');
      
$db_or db_or()
          ->
condition($db_and1)
          ->
condition($db_and2);
      
$query->condition($db_or);
      
$result $query->execute()->fetchAll();
?>

Только результат пустой, хотя ноды с терминами 313 и 323 точно есть