Drupal 7 发生了很大的改变,包括数据结构和一下api,总之感觉上更加强大,开发更加方便,提供了更多扩展性很强的api使用。drupal 7 数据层比较drupal 6 而已发生了很大的改变。drupal 7 多表查询使用实例:9 c v/ T9 l* L
- c# {' y( f' {( ^: ^2 x
<?php3 ?& g5 U7 g; i( H2 n& \
$ Z- o3 N5 |2 p( ^* G
/**
; p0 @3 I7 ]( t; n/ G; _+ \* 只要读取一个词汇表里面的没有父类的ID,也就是最高级别的分类4 j, u( `4 _" [' ]9 C
*/
4 d: r& A$ G8 J3 l6 Jfunction ditusearch_top_parent_id($vid) {) r' t% W9 [) X- `6 _
$query = db_select('taxonomy_term_hierarchy','h'); //选择表
" Z% \( N9 L4 q5 r- H! a $query->join('taxonomy_term_data','d','h.tid = d.tid'); // 联合查询! V/ F [$ }6 k2 G( |- S
$query->addField('d', 'tid'); // 添加字段
9 C. g2 q& y1 t" D% J4 R$ w' A. J $query->condition('h.parent',0); // 添加条件where
; `- e9 D- R/ U, U# J! W $query->condition('d.vid',$vid); // 再添加一个条件 and ....
3 l$ a% N1 C* F; t $query->addTag('ditusearch_generate_path'); // 添加Tag 可选项,这个就是方便其他地方可以改变这个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook! t8 z3 [7 Q5 _
$tid = $query->execute()->fetchCol();- J' K) K7 j" ~& |4 ^# v
return $tid; //返回一个数组
2 s% k2 _2 w% f0 n0 J}
+ q% }- v7 O" l# i& m. b% r N9 O* z+ d; K: K: U' ~4 y! G$ q
h! l* a$ v! f; k/**
, y V& G6 v! c! {* hook_query_alter使用, 对上面的 $query 改变0 b& }8 {7 g: z6 l& a
*/8 Y! q( Y+ g: j" q: l
function ditusearch_query_alter(QueryAlterableInterface $query) {
' M6 m/ C- d* G2 V3 m if($query->hasTag('ditusearch_generate_path')) {
& |1 x5 B* A9 \$ p" L $query->addField('d','vid'); // 通过下图可以感到对查询进行了改变# J. U5 ]% s- B1 ~: d) x
} L2 B" K0 _% p3 g% O4 ~1 A
}, l# g1 O5 J6 }+ {
?>7 |4 x& @6 _' {- C* W" F
1 R$ s: F2 D; p3 c
* L8 P i8 b, c* S' U- V" V1 x# D1 A: K1 R! i, C
( p3 W6 \: s, T) M* h |
|