Drupal 7 db_select 联合表查询

论坛: 

 Drupal 7 发生了很大的改变,包括数据结构和一下api,总之感觉上更加强大,开发更加方便,提供了更多扩展性很强的api使用。drupal 7 数据层比较drupal 6 而已发生了很大的改变。drupal 7 多表查询使用实例:
 
<?php
function ditusearch_top_parent_id($vid) {
    $query = db_select('taxonomy_term_hierarchy','h'); //选择表
    $query->join('taxonomy_term_data','d','h.tid = d.tid'); // 联合查询
    $query->addField('d', 'tid'); // 添加字段
    $query->condition('h.parent',0); // 添加条件where
    $query->condition('d.vid',$vid); // 再添加一个条件 and ....
    $query->addTag('ditusearch_generate_path'); // 添加Tag 可选项,这个就是方便其他地方可以改变这个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook
    $tid = $query->execute()->fetchCol();
    return $tid; //返回一个数组
}

function ditusearch_query_alter(QueryAlterableInterface $query) {
    if($query->hasTag('ditusearch_generate_path')) {
        $query->addField('d','vid'); // 通过下图可以感到对查询进行了改变
    }
}
?>