Drupal 7 发生了很大的改变,包括数据结构和一下api,总之感觉上更加强大,开发更加方便,提供了更多扩展性很强的api使用。drupal 7 数据层比较drupal 6 而已发生了很大的改变。drupal 7 多表查询使用实例:& p A2 n7 ~4 j% a/ y
5 U8 v1 d) S) i' g; [
<?php
2 S3 S1 |6 l) e2 k3 T
. s; p+ n4 k3 S2 { k/**
) Z) ~! n4 U# [6 n( E* 只要读取一个词汇表里面的没有父类的ID,也就是最高级别的分类
9 a+ r% `# h; v9 g3 g*/
* A- s! t3 z+ ^' `; G9 k: hfunction ditusearch_top_parent_id($vid) {
( ~# m+ `2 I# a$ _0 v $query = db_select('taxonomy_term_hierarchy','h'); //选择表! H- ?8 U: h8 a1 a2 X" [( A
$query->join('taxonomy_term_data','d','h.tid = d.tid'); // 联合查询6 @& P9 Y; a' ^* x% g1 m
$query->addField('d', 'tid'); // 添加字段0 B; m1 {. g! Z7 X3 m" J, u
$query->condition('h.parent',0); // 添加条件where $ @0 H" R: x; r2 Y# F
$query->condition('d.vid',$vid); // 再添加一个条件 and ....
3 g6 O. V4 S9 P( r $query->addTag('ditusearch_generate_path'); // 添加Tag 可选项,这个就是方便其他地方可以改变这个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook1 V, g4 N7 J! y( g# n
$tid = $query->execute()->fetchCol();4 U% y4 i5 U9 B# G, z( {
return $tid; //返回一个数组
3 R# w0 B" e3 S( Z: }}
" X( m0 e6 x% |; f' d K/ H/ R1 K6 d) d2 r% T m. [: C- c
( s% \$ _- Z. I$ |7 o% y V) r/**4 C9 y3 B% Z% T2 g# }/ s
* hook_query_alter使用, 对上面的 $query 改变
* \9 I& g o. d l*/
6 l9 q8 V8 }+ lfunction ditusearch_query_alter(QueryAlterableInterface $query) {
& d% d) D8 M0 x0 j' ^/ x- S1 p$ Z if($query->hasTag('ditusearch_generate_path')) {
4 k. U) b; B% K1 n" B' t $query->addField('d','vid'); // 通过下图可以感到对查询进行了改变
4 }8 @. x% R, ^* x# a5 J+ b" |# Y }
5 E0 `- A! k- N& J% k}
' Q4 e' h& Q }: ?' _6 h/ ]- {4 y?>( @4 p, Q: Y' I& E$ x
4 P3 Y8 m6 h! x8 U m
: `" E# @ r u
7 p% U% [; }) w O, Y) e0 b/ J
" E6 W! B4 D5 Y5 u" N, p7 f( f |
|