国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

Drupal 7 db_select 联合表查询

[复制链接]
发表于 10-13-2011 01:49 | 显示全部楼层 |阅读模式
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 hook_query_alter_0.jpg
% p! D. G, J; f# ]

|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 4-28-2025 18:01 , Processed in 0.334207 second(s), 123 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表