Drupal对数据库执行查询

时间:2010-09-16 13:37:08

标签: drupal drupal-6

我想从drupal数据库中检索一些nids。我有一个我希望运行的查询。

  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 Relationships and Arguments

  

我有一个Person内容类型。它有一个   公司的节点参考字段   这也是一种内容类型。然后我   有一个名为Project的内容类型。一个   project有一个节点引用   公司内容类型。我想列出   所有与一个人有关的项目   id(nid)id(nid)

1 个答案:

答案 0 :(得分:3)

以下作品:

$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

解决了这个问题