Drupal 7 вытащить поля типа контента с помощью db api - PullRequest
0 голосов
/ 29 декабря 2011

Что я делаю не так.Я не могу тянуть, основываясь на полях типов контента в drupal 7.

function ycs_list($number) {
  $query = db_select('field_data_field_active_image', 'a')
  ->fields('a', array('field_active_image_value', 'entity_id'))
  ->condition('a.field_active_image_value', 1);
  $query->join('node', 'n', 'n.nid = a.entity_id');
  $query
  ->fields('n', array('nid', 'title', 'uid'))
  ->range(0, $number)
  ->addTag('node_access')
  ->execute();
  print $query;
  return $query;
}

Вот как выводится запрос:

SELECT a.field_active_image_value AS field_active_image_value, a.entity_id AS entity_id, n.nid AS nid, n.title AS title, n.uid AS uid FROM {field_data_field_active_image} a INNER JOIN {node} n ON n.nid = a.entity_id WHERE (a.field_active_image_value = :db_condition_placeholder_0) LIMIT 3 OFFSET 0

Он выглядит правильно и работает напрямую в mysql,Я должен изменить: db_conditon_placehoder_0 на 1, и это работает, делая прямой запрос SQL.Я хочу получить массив узлов на основе условия в поле active_image.Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 30 декабря 2011

Не зная фактической ошибки, которую вы получаете, немного сложно отладить существующий код, но я бы посоветовал использовать вместо этого EntityFieldQuery класс :

function ycs_list($number) {
  $query = new EntityFieldQuery;
  $query->entityCondition('entity_type', 'node')
    ->entityCondition('bundle', 'name_of_node_type') // Remove this line if you don't want to specify a particular node type for the query.
    ->fieldCondition('field_active_image', 'value', 1)
    ->range(0, $number)
    ->addTag('node_access');

  // Execute the query and check for results.
  $results = $query->execute();
  $nodes = array();
  if ($results && isset($results['node'])) {
    // Load the node objects based on the node ids returned from the query.
    $nodes = node_load_multiple(array_keys($results['node']));
  }

  // If nodes matching your conditions were found you now have an array of fully loaded node objects in $nodes.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...