Drupal выполняет запрос к базе данных - PullRequest
2 голосов
/ 16 сентября 2010

Я хочу получить nids из моей базы данных drupal.У меня есть запрос, который я хочу выполнить.

  SELECT node.nid AS projectnid
            FROM node node
            INNER JOIN content_type_project node_data_field_project_client ON node.vid = node_data_field_project_client.vid
            WHERE node_data_field_project_client.field_project_client_nid = (SELECT node_data_field_profile_company.field_profile_company_nid AS company_nid
            FROM node node  LEFT JOIN content_type_profile node_data_field_profile_company ON node.vid = node_data_field_profile_company.vid WHERE node.nid = 218)

Я вызываю запрос, используя:

$query =
        "
            SELECT node.nid AS projectnid
            FROM node node
            INNER JOIN content_type_project node_data_field_project_client ON node.vid = node_data_field_project_client.vid
            WHERE node_data_field_project_client.field_project_client_nid = (SELECT node_data_field_profile_company.field_profile_company_nid AS company_nid
            FROM node node  LEFT JOIN content_type_profile node_data_field_profile_company ON node.vid = node_data_field_profile_company.vid WHERE node.nid = 218)
        ";
$result = db_query($query);
dsm($result);

DSM дает мне пустой объект.Когда я запускаю SQL-запрос напрямую, я получаю результат.

Поэтому мой вопрос заключается в том, как заставить db_query вернуть все результаты в виде объекта (я не против, если это объект или массив)..

(SQL был создан путем просмотра вывода запроса для представлений.)

Это продолжение вопроса: Отношения и аргументы Drupal Views

У меня есть тип контента Person.У него есть поле ссылки на узел компании, которое также является типом контента.Затем у меня есть тип контента под названием Project.Проект имеет ссылку на узел для типа контента компании.Я хочу перечислить все проекты, связанные с id человека (nid) id (nid)

1 Ответ

3 голосов
/ 16 сентября 2010

Следующие работы:

$query =
        "
            SELECT node.nid AS projectnid
            FROM node node
            INNER JOIN content_type_project node_data_field_project_client ON node.vid = node_data_field_project_client.vid
            WHERE node_data_field_project_client.field_project_client_nid = (SELECT node_data_field_profile_company.field_profile_company_nid AS company_nid
            FROM node node  LEFT JOIN content_type_profile node_data_field_profile_company ON node.vid = node_data_field_profile_company.vid WHERE node.nid = 218)
        ";
$results = db_query($query);
while ($result = db_result($results)) {
    dsm($result);
}

Вам нужно использовать db_result (), чтобы получить результаты.Работал с помощью http://drupal.org/node/259432#comment-846946

...