Sugarcrm支持产品指南糖开发人员糖开发人员指南10.0数据框架Vardefs.使用索引

使用索引

概述

Sugar提供了一种简单的方法,用于通过VARDEF框架创建自定义索引。索引可以构建在模块中的一个或多个字段上。索引可以保存到数据库级别,也可以仅在诸如此类的应用程序中提供 导入重复检查.

索引元数据

索引具有以下元数据选项,可以按每个索引配置:

钥匙 价值 描述 
姓名 细绳

定义索引的唯一标识符。最佳实践建议索引以IDX开头,并包含后缀CSTM,以避免与股票指数冲突。 

笔记 :某些数据库对索引名称的长度有限制。请咨询您的数据库供应商以避免任何问题。

类型 细绳   所有索引都应该使用“索引”的类型
领域 大批 用于索引的字段的PHP数组使用 
来源 细绳 指定为“非DB”以避免在数据库中创建索引

创建索引

Stock indexes are initially defined in the module's vardefs file under the indices array. For reference, you can find them using the vardef path of your module. The path will be  ./modules/<module>/vardefs.php.

Custom indexes should  be created using the Extension Framework. First, create a PHP file in the extension directory of your desired module. The path should similar to ./custom/Extension/modules/<module>/Ext/Vardefs/<name>.php.

在新文件中,添加相应的$字典参考以定义自定义索引:

<?php

$dictionary['<module>']['indices'][] = array(
	'name' => '<index name>',
	'type' => 'index',
	'fields' => array(
		'field1',
		'field2',
	)
);

笔记 :出于性能原因,否则不建议在单个字段上创建索引,除非源设置为非数据库。

安装后,您需要导航到admin> Repair >快速修复和重建以启用自定义索引。您需要执行重建过程生成的任何脚本。

删除索引

Stock indexes are initially defined in the module's vardefs file under the indices array. For reference, you can find them using the vardef path of your module. The path will be ./modules/<module>/vardefs.php.

Stock indexes should be removed using the Extension Framework. First, create a PHP file in the extension directory of your desired module. The path should similar to ./custom/Extension/modules/<module>/Ext/Vardefs/<name>.php.

在新文件中,循环通过$ dictionary的现有'indices的子阵列,以找到股票索引以删除,并使用Unset()从数组中删除它。

例子

以下是从呼叫模块的VARDEF中删除idx_calls_date_start索引的示例。

First, create ./custom/Extension/modules/Calls/Ext/Vardefs/remove_idx_calls_date_start.php from the root directory of your Sugar installation on the web server. When creating the file, keep in mind the following requirements:

  • 只要它以opps扩展为止,文件的名称并不重要。
  • 目录路径的其余部分区分大小写,因此请务必如图所示创建目录。
  • 如果要删除除调用以外的模块的索引,则将相应的目录名与该模块替换为。
  • 确保整个目录路径和文件具有正确的所有权以及Web服务器访问该文件的足够权限。

文件的内容应该类似于以下代码:

<?php

$call_indexes = $dictionary['Call']['indices'];
$remove_index = "idx_calls_date_start";

foreach($call_indexes as $index_key => $index_item) {
    if( $index_item['name'] == $remove_index ) {
        unset($dictionary['Call']['indices'][$index_key]);
    }
}

笔记 :从模块的索引中删除对索引的引用实际上并不实际地从模块的数据库表中删除索引。从索引阵列中删除引用可确保在执行未来的快速修复和重建时,不会将索引添加回模块的数据库表。必须直接在数据库级别删除数据库索引。在MySQL上,使用当前示例,可以使用Query来完成:

ALTER TABLE calls DROP INDEX idx_calls_date_start;

安装后,您需要导航到admin> Repair >快速修复和重建以从$字典阵列中删除索引。您需要执行重建过程生成的任何脚本。

为导入重复检查创建索引

通过导入向导将记录导入Sugar时,用户可以选择要使用的映射字段以执行重复检查,从而避免创建重复记录。以下说明解释了如何在此步骤中为选择启用其他字段或一组字段。
可用字段

例子

以下是将家庭电话字段添加到联系模块的重复检查的示例。

First, create ./custom/Extension/modules/Contacts/Ext/Vardefs/custom_import_index.php from the root directory of your Sugar installation on the web server. When creating the file, keep in mind the following requirements:

  • 只要它以opps扩展为止,文件的名称并不重要。
  • 目录路径的其余部分区分大小写,因此请务必如图所示创建目录。
  • 如果要为联系人以外的模块创建导入索引,则将相应的目录名与该模块替换。
  • 确保整个目录路径和文件具有正确的所有权以及Web服务器访问该文件的足够权限。

文件的内容应该类似于以下代码:

<?php

$dictionary['Contact']['indices'][] = array(
     'name' => 'idx_home_phone_cstm',
     'type' => 'index',
     'fields' => array(
         0 => 'phone_home',
     ),
     'source' => 'non-db',
);

Please note that the module name in line 2 of the code is singular (i.e. Contact, not Contacts). If you are unsure of what to enter for the module name, you can verify the name by opening the ./cache/modules/<module_name>/<module_name>vardefs.php file. The second line of that file will have text like the following:

$GLOBALS["dictionary"]["Contact"] = array (...);

“字典”的参数是与定义自定义索引的文件中使用的相同参数。验证对字段组合的重复项(即,如果多个字段的值与现有记录的值匹配,则只能标记重复项),然后只需将所需的字段添加到代码示例中的“字段”数组中。

最后,导航到管理员> Repair >快速修复和重建,以在模块中导入记录时,可以进行自定义索引进行重复验证。 

最后修改:2020-03-16 17:00:15