Drupal 7 发生了很大的改变,包括数据结构和一下api,总之感觉上更加强大,开发更加方便,提供了更多扩展性很强的api使用。drupal 7 数据层比较drupal 6 而已发生了很大的改变。drupal 7 多表查询使用实例:" |! f* {: M8 t
2 x# a+ v# x! H% p% H; z5 q<?php
) J. V5 [' e& O
% P1 ^6 Q. v* s5 n* P/**6 n5 E' r4 g! \6 \* H
* 只要读取一个词汇表里面的没有父类的ID,也就是最高级别的分类0 l2 _- _( O# R( ^% h% ?
*/
. C# f" s* S% ]* V( r' Jfunction ditusearch_top_parent_id($vid) {
. o: h/ ~+ ]! e. V3 k $query = db_select('taxonomy_term_hierarchy','h'); //选择表
5 S0 H0 ?, q* l) z& K8 Q; ^ $query->join('taxonomy_term_data','d','h.tid = d.tid'); // 联合查询
1 B9 p1 x I5 s* }3 r' s3 s/ I $query->addField('d', 'tid'); // 添加字段
4 Y% P7 w/ t% e9 ~: J T $query->condition('h.parent',0); // 添加条件where
& o0 s# {. `& O) O $query->condition('d.vid',$vid); // 再添加一个条件 and ....2 d" {# B7 c/ ~# K2 r) e3 o
$query->addTag('ditusearch_generate_path'); // 添加Tag 可选项,这个就是方便其他地方可以改变这个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook
8 a/ ?: K- b5 n, j E( }: r $tid = $query->execute()->fetchCol();
. y4 e; |, R5 [1 T5 b) Z return $tid; //返回一个数组 - {& n+ L( V0 W- [
}1 G' Q. Y* j W* C% ~: o' ]0 M( @: u
( K! N1 l# R: R5 q' l1 n4 c V8 g! i7 G, p+ q' E F9 {
/**
: u7 e: c5 s; _$ F* hook_query_alter使用, 对上面的 $query 改变
8 }3 \6 U5 G8 }7 @4 ~: z. |*/8 Y" m; i& W1 V
function ditusearch_query_alter(QueryAlterableInterface $query) {
3 A A r1 F- B# U( I; K4 l if($query->hasTag('ditusearch_generate_path')) {& @. t* a1 b6 c0 Y3 `' H" O
$query->addField('d','vid'); // 通过下图可以感到对查询进行了改变) F, H# @) x8 c
}9 ?0 }4 X6 W" U1 t- u( V
}
$ q% A7 h4 z4 l1 @ g5 M?>
# L* W6 A5 L( ^. n8 c- ?4 t
1 Z0 w6 [% S N$ y- F* p+ m$ s4 _2 q2 _9 \4 a: y/ ?6 N
9 W6 c# b+ z0 Y+ W0 `/ L3 W
% p! D. G, J; f# ] |
|