国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

Drupal 7 db_select 联合表查询

[复制链接]
发表于 10-13-2011 01:49 | 显示全部楼层 |阅读模式
Drupal 7 发生了很大的改变,包括数据结构和一下api,总之感觉上更加强大,开发更加方便,提供了更多扩展性很强的api使用。drupal 7 数据层比较drupal 6 而已发生了很大的改变。drupal 7 多表查询使用实例:
3 S* g6 u; d  I/ `6 P( U3 N: D8 B* w$ |" {# K8 g
<?php
: Y7 Q8 Y% X8 o! o3 \: |, Y7 k
. f$ s  k! l' c3 ~+ d/**7 v" @. M. b( K1 @
* 只要读取一个词汇表里面的没有父类的ID,也就是最高级别的分类9 |" n4 ~$ _$ I4 @! B
*/
: p8 [: a7 {1 \6 c2 n& J7 \9 S, Dfunction ditusearch_top_parent_id($vid) {
* _1 d0 o+ w0 q8 f, l: q6 \4 Y    $query = db_select('taxonomy_term_hierarchy','h'); //选择表/ z5 D4 p6 ?, W. Y* E) k5 T
    $query->join('taxonomy_term_data','d','h.tid = d.tid'); // 联合查询  l3 Q3 r+ T2 ]) b2 D" L, x
    $query->addField('d', 'tid'); // 添加字段
- P$ n) {2 Q- \. P6 y% g    $query->condition('h.parent',0); // 添加条件where
9 O$ z4 o) E9 _    $query->condition('d.vid',$vid); // 再添加一个条件 and ....
* \/ e. ]! t- I! Q! U    $query->addTag('ditusearch_generate_path'); // 添加Tag 可选项,这个就是方便其他地方可以改变这个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook
9 r# Z" k& U. }+ o5 f  `$ c    $tid = $query->execute()->fetchCol();
/ e( u+ e0 p" d" r8 F- z+ z* p0 _% {    return $tid; //返回一个数组 7 K% u. l1 [: n2 K' B( F5 z9 r
}
8 @! ~0 i' @6 b+ m& Q0 u. p+ b, `4 J3 C, G
& _% ~8 I$ v, P+ Z' P
/**
" Y. u% y! U; t  w! }3 Z! L* hook_query_alter使用, 对上面的 $query 改变
" c  @+ W3 d8 D; v7 o- V*/
/ Y2 A  M& V6 W4 h9 Pfunction ditusearch_query_alter(QueryAlterableInterface $query) {- ]3 |1 [1 S6 u  o
    if($query->hasTag('ditusearch_generate_path')) {% c6 b+ B7 Q) \2 Q: S/ Y; u
        $query->addField('d','vid'); // 通过下图可以感到对查询进行了改变4 O/ M0 P. J  u8 c& K+ H6 ]. R
    }
9 i& s, v' s1 r* c' j7 T% J}( J- M! k/ p% O8 E
?>

+ U. z0 C& J. |/ t/ ^' r. I) o2 Y7 ~0 n

$ Z9 x1 ~* w4 k: Q6 V) A/ h$ O/ V6 d" Q% w
hook_query_alter_0.jpg
2 X  t4 q" t0 f# [$ f

|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 6-20-2025 18:29 , Processed in 0.349257 second(s), 125 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表