如何用PHP脚本(Vtlib函数)删除Vtiger7 CRM自定义模块1:1关系
删除Vtiger 7 CRM中旧的1:1关联关系(PHP脚本实现)
实现步骤
- 环境准备:将脚本放在Vtiger CRM根目录下,确保能加载核心依赖库。
- 模块定位:确认主模块与旧关联模块的内部名称(非显示名称,可在后台「模块管理」的模块详情中查看)。
- 脚本编写:使用Vtlib官方API删除关联关系,避免直接操作数据库引发异常。
完整PHP脚本示例
<?php // 加载Vtiger核心依赖 require_once('config.inc.php'); require_once('vtlib/Vtiger/Module.php'); // 替换为你的主模块内部名称 $mainModuleName = 'CustomMainModule'; // 替换为要删除的旧关联模块内部名称 $oldRelatedModuleName = 'OldRelatedModule'; // 获取模块实例 $mainModule = Vtiger_Module::getInstance($mainModuleName); $oldRelatedModule = Vtiger_Module::getInstance($oldRelatedModuleName); if ($mainModule && $oldRelatedModule) { // 删除主模块到旧关联模块的关联列表 // 若不确定关联标签,留空即可自动匹配对应模块条目 $mainModule->deleteRelatedList($oldRelatedModule, ''); // 若为双向1:1关系,同步删除旧关联模块到主模块的关联列表 $oldRelatedModule->deleteRelatedList($mainModule, ''); // 删除关系元数据记录 $relationModel = Vtiger_Relation_Model::getInstance($mainModule, $oldRelatedModule); if ($relationModel) { $relationModel->delete(); } echo "旧1:1关联关系已成功删除"; } else { echo "错误:无法获取模块实例,请检查模块名称是否正确"; } ?>
关键说明
- 模块名称准确性:必须使用模块的内部名称(如自定义模块创建时设置的
name字段值),而非前台显示的友好名称。 - 双向关系处理:如果1:1关系是双向配置的(双方都显示关联视图),必须同时删除两个方向的关联列表,否则会残留无效关联。
- 数据备份:运行脚本前建议备份Vtiger数据库,避免误操作导致数据丢失。
- 权限要求:执行脚本的服务器用户需拥有Vtiger目录的读写权限,且脚本需在Vtiger上下文环境中运行。
内容的提问来源于stack exchange,提问作者Santosh Kumar
相关产品推荐
相关产品推荐

