You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP脚本(Vtlib函数)删除Vtiger7 CRM自定义模块1:1关系

删除Vtiger 7 CRM中旧的1:1关联关系(PHP脚本实现)

实现步骤

  1. 环境准备:将脚本放在Vtiger CRM根目录下,确保能加载核心依赖库。
  2. 模块定位:确认主模块与旧关联模块的内部名称(非显示名称,可在后台「模块管理」的模块详情中查看)。
  3. 脚本编写:使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:45:40