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
2 X t4 q" t0 f# [$ f |
|