Drupal 7 发生了很大的改变,包括数据结构和一下api,总之感觉上更加强大,开发更加方便,提供了更多扩展性很强的api使用。drupal 7 数据层比较drupal 6 而已发生了很大的改变。drupal 7 多表查询使用实例:& x! }; _$ h9 s: N
% ?3 S# g5 ^" w6 E<?php1 j6 o& O) O* U- w
Z6 e7 @% ^* {) i' {: p5 e0 ?
/**5 ?, l; O* G% p {7 k5 I9 N5 b
* 只要读取一个词汇表里面的没有父类的ID,也就是最高级别的分类
0 n3 I( _; C. P- M*/0 }( W+ B& I' e% T0 k* _1 [
function ditusearch_top_parent_id($vid) {6 V, ]4 N Y+ o; x
$query = db_select('taxonomy_term_hierarchy','h'); //选择表
; }1 m- C6 {5 i- @3 e* t $query->join('taxonomy_term_data','d','h.tid = d.tid'); // 联合查询$ T3 {3 \6 Q; q+ C3 R
$query->addField('d', 'tid'); // 添加字段
# A: g: B7 J& _- \ $query->condition('h.parent',0); // 添加条件where 6 g3 T1 A; y2 k- R
$query->condition('d.vid',$vid); // 再添加一个条件 and ....
) F3 c4 Y: t2 V) q $query->addTag('ditusearch_generate_path'); // 添加Tag 可选项,这个就是方便其他地方可以改变这个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook
* X2 z+ \! z/ n" P: y- I $tid = $query->execute()->fetchCol();7 h2 L( O3 |) J6 Y& M @ @
return $tid; //返回一个数组
4 m3 T" V* h4 a$ ^5 z. {( k6 j}
# ^6 r. d8 l1 k1 J+ s9 `$ _! b. f1 Z) R) E
! V- k% h/ X& j, D
/**
+ F1 v& |- {% p( E6 F" s* hook_query_alter使用, 对上面的 $query 改变+ I( @- u. n" l. a
*/
" g6 v+ Z. _& x' ?function ditusearch_query_alter(QueryAlterableInterface $query) {
2 i9 t$ c. f2 X if($query->hasTag('ditusearch_generate_path')) {
/ V: s* n( p5 z( K; x H $query->addField('d','vid'); // 通过下图可以感到对查询进行了改变
4 ]- K0 _4 G( q }
8 B+ e9 }0 s1 T, Q8 m: O Q) Q}8 s, a: O" Q9 Y; r0 P' M
?>
/ N' o) G/ H# z9 h3 H9 d, z: X+ j6 ~- K8 b+ P( z
2 Y- X4 p2 [* `3 B: g4 W5 \7 l1 B6 P% q6 t
7 ]/ S Q t: J) J, I4 k6 M |
|