Drupal 对数据库执行查询

标签 drupal drupal-6

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

  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 是通过查看 View 的查询输出创建的。)

这是问题的后续:Drupal Views Relationships and Arguments

I have a Person content type. It has a node reference field of a company which is also a content type. I then have a content type called Project. A project has a node reference to a company content type. I want to list all the projects related to a person id (nid)id (nid)

最佳答案

以下作品:

$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 解决了这个问题

关于Drupal 对数据库执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3727201/

相关文章:

drupal - 无法使用 drupal 表单 api 获取复选框值

drupal - 如何修改 Drupal 6 中的图书复制模块,以便在制作副本后将用户转发到不同的起始选项卡?

php - Apache Solr 搜索自动完成

html - 需要帮助理解在我的 CSS 中一起使用 ID 和类

php - 如何在 Drupal 6 中仅引用图像节点的图像部分

iphone - 在Drupal 6中通过ID获取缩略图,在iPhone/Android上显示缩略图

drupal - 在 Drupal 中将用户限制为给定内容类型的单个节点的最佳方法

drupal - 创建只有月份和年份的日期字段 - Drupal

Drupal 8 在以编程方式渲染节点时使用建议的模板

drupal - 修改 drupal View 输出以显示类似 facebook 的按钮