这里我尝试连接三张桌子以便我可以获得我想要的外出
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行
答案 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();