具有三个表的数据库连接查询

时间:2018-03-17 07:41:42

标签: php mysql database drupal-7

这里我尝试连接三张桌子以便我可以获得我想要的外出

Drupal 7 db select

function abc($Incharge) {
   $res= db_select('node', 'n')
 ->Join('aa', 'f', 'f.id = n.nid')
 ->Join('bb', 'd', 'd.id = f.entity_id');
 return $total_res = $res ->condition('n.type', 'ram')
   ->condition('d.target_id',$Incharge)
   ->condition('n.status', 1)
   ->fields('n', array('nid', 'title'))
   ->orderBy('n.title', 'ASC')
   ->execute()->fetchAllKeyed();


}

但我面临一个问题

  

致命错误:在字符串中调用成员函数Join()   /opt/lampp/htdocs/transgenic/sites/all/modules/report_system/report_system.module   在735行

enter image description here

2 个答案:

答案 0 :(得分:2)

根据文件(https://www.drupal.org/docs/7/api/database-api/dynamic-queries/joins

  

join方法的返回值是表的别名   分配

它还声明 -

  

连接无法链接,因此必须单独调用它们(请参阅   链接)。如果你将多个功能链接在一起就行了   这样:

所以你必须做点像......

function abc($Incharge) {
   $res= db_select('node', 'n');
   $res->Join('aa', 'f', 'f.id = n.nid');
   $res->Join('bb', 'd', 'd.id = f.entity_id');
   return $total_res = $res ->condition('n.type', 'ram')
       ->condition('d.target_id',$Incharge)
       ->condition('n.status', 1)
       ->fields('n', array('nid', 'title'))
       ->orderBy('n.title', 'ASC')
       ->execute()->fetchAllKeyed();
}

答案 1 :(得分:1)

我不知道更多关于drupal我找到了这样的解决方案希望它能帮到你。

SelectQuery::join(), SelectQuery::leftJoin()等不返回查询(他们将别名返回到创建的JOIN),因此无法将其链接。

只需将您的代码分开:

$query = db_select('node', 'n')
  ->fields('l')
  ->fields('s', array('stamp', 'message'))
  ->orderBy('`order`', 'ASC');

$query->Join('aa', 'f', 'f.id = n.nid');

$result = $query->execute();