41 插入查询

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:06

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
插入查询必须使用一个查询构建器对象。对于LOB (大对象, 比如MySQL中的TEXT) 和BLOB(二进制大对象)字段,某些数据库需要特殊处理,所以我们需要一个抽象层,从而允许独立的数据库驱动,按照它们自己的要求实现自己的特殊处理。
插入查询使用db_insert()函数作为开始,如下所示:

Drupal版本:

40 hook_query_alter()

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:06

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
标签化和元数据本身并不起任何作用。它们的存在就是为hook_query_alter()提供信息,在hook_query_alter()中,可对选择查询作任何修改。
所有的动态选择对象都是通过execute()方法,在查询字符串被编译之前,传递给hook_query_alter()的。这就为模块提供了一个机会,方便它们按照自己的需要来操作查询。hook_query_alter()接收单个参数:选择查询对象本身。

Drupal版本:

39 元数据

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:03

​作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
还可以为查询添加一些元数据,从而为alter钩子提供附加的上下文信息。元数据可以是任意的PHP变量,也可以用一个字符串作为键。

Drupal版本:

37 修改查询

admin 的头像
Submitted by admin on 星期二, 2015-06-09 02:56

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
动态选择查询的一个重要特性,就是其它模块能够修改它们。这就允许了其它模块把它们自己的限制注入到查询中,这可以是修改一个模块的行为,也可以是在查询运行时应用限制条件,比如节点访问限制。查询变更包含三个组成部分:tagging(标签化)、元数据(meta data)和hook_query_alter()。

Drupal版本:

36 创建一个新的扩展器

admin 的头像
Submitted by admin on 星期二, 2015-06-09 02:55

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

一个扩展器,就是一个简单的实现了SelectQueryInterface接口的类;并且在它的构造函数中,有两个参数:一个选择查询(或者是一个实现了SelectQueryInterface接口的对象)和一个DatabaseConnection对象。它必须重新实现SelectQueryInterface接口中的方法,并把它们传递给构造函数中指定的查询对象,在合适的时候返回自己。

Drupal版本:

35 使用一个扩展器

admin 的头像
Submitted by admin on 星期一, 2015-06-08 01:46

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

为了使用一个扩展器,你首先需要有一个查询对象。extend()方法由查询对象返回一个新的对象,来替换原有的查询对象。例如:

Drupal版本:

34 扩展器

admin 的头像
Submitted by admin on 星期一, 2015-06-08 01:42

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
选择查询支持“扩展器”这一概念。一个扩展器,就是在运行时向选择查询添加功能的一种方式。添加功能的方式有两种,可以是附加新的方法,也可以是改变已有方法的行为。

对于熟悉面向对象设计模式的人来说,扩展器就是装饰模式的一个实现。它通过一种灵活的方式,而不是采用子类继承的方式,从而向对象动态的追加额外的扩展功能。

Drupal版本:

页面

Subscribe to Think in Drupal RSS