Sugarcrm支持产品指南糖开发人员糖开发人员指南11.0数据框架关系定制关系

定制关系

概述

此页面需要概述

创建自定义关系

关系初始在关系阵列下的模块的Vardefs文件中定义。供参考,您可以使用Vardef路径找到它们,如下所示:

./modules/<module>/vardefs.php

使用扩展框架以不同的方式创建自定义关系。该过程需要两个步骤,这些步骤在以下部分中解释:

  1. 定义关系元数据
  2. 定义纸张化思想中的关系

定义关系元数据

自定义关系的定义将在类似于以下的路径中找到:

./custom/metadata/<relatonship name>MetaData.php

This file will contain the $dictionary information needed for the system to generate the relationship. The $dictionary array will contain the following:

指数 类型 描述
true_relationship_type. 细绳 关系的结构(可能的值:'一对多'或'多对多')
from_studio. 布尔基 是否在工作室创建了关系
桌子 细绳 在数据库中创建的表的名称以包含链接ID
领域 大批 要在关系连接表上创建的字段数组
指数 大批 要创建的索引列表
rel...........ationships 大批 定义关系的数组
关系。<rel> 大批 定义关系的数组
关系。<rel>.lhs_module 细绳 左手模块(应匹配$ beanlist索引)
关系。<rel>.lhs_table 细绳 左手表名称
关系。<rel>.lhs_key 细绳 从左侧表中使用的关键
关系。<rel>.rhs_module 细绳 右侧模块(应匹配$ BeanList索引)
关系。<rel>.rhs_table 细绳 右手表名称
关系。<rel>.rhs_key 细绳 从右边的表格使用的关键
关系。<rel>.relationship_type 细绳 关系类型,通常存储为“多对多”
关系。<rel>.join_table 细绳 加入表
关系。<rel>.join_key_lhs 细绳 左表键,应存在于上面的表字段定义中
关系。<rel>.join_key_rhs 细绳 右图键,应存在于上面的表字段定义中

元数据示例

创建自定义1:M之间的帐户和联系人之间的关系将产生以下元数据文件:

./custom/metadata/accounts_contacts_1metadata.php.

<?php

// created: 2013-09-20 15:15:47

$dictionary["accounts_contacts_1"] = array (
  'true_relationship_type.' => 'one-to-many',
  'from_studio' => true,
  'relationships' =>
  array (
    'accounts_contacts_1' =>
    array (
      'lhs_module' => 'Accounts',
      'lhs_table' => 'accounts',
      'lhs_key' => 'id',
      'rhs_module' => 'Contacts',
      'rhs_table' => 'contacts',
      'rhs_key' => 'id',
      'relationship_type' => 'many-to-many',
      'join_table' => 'accounts_contacts_1_c',
      'join_key_lhs' => 'accounts_contacts_1accounts_ida',
      'join_key_rhs' => 'accounts_contacts_1contacts_idb',
    ),
  ),
  'table' => 'accounts_contacts_1_c',
  'fields' =>
  array (
    0 =>
    array (
      'name' => 'id',
      'type' => 'varchar',
      'len' => 36,
    ),
    1 =>
    array (
      'name' => 'date_modified',
      'type' => 'datetime',
    ),
    2 =>
    array (
      'name' => 'deleted',
      'type' => 'bool',
      'len' => '1',
      'default' => '0',
      'required' => true,
    ),
    3 =>
    array (
      'name' => 'accounts_contacts_1accounts_ida',
      'type' => 'varchar',
      'len' => 36,
    ),
    4 =>
    array (
      'name' => 'accounts_contacts_1contacts_idb',
      'type' => 'varchar',
      'len' => 36,
    ),
  ),
  'indices' =>
  array (
    0 =>
    array (
      'name' => 'accounts_contacts_1spk',
      'type' => 'primary',
      'fields' =>
      array (
        0 => 'id',
      ),
    ),
    1 =>
    array (
      'name' => 'accounts_contacts_1_ida1',
      'type' => 'index',
      'fields' =>
      array (
        0 => 'accounts_contacts_1accounts_ida',
      ),
    ),
    2 =>
    array (
      'name' => 'accounts_contacts_1_alt',
      'type' => 'alternate_key',
      'fields' =>
      array (
        0 => 'accounts_contacts_1contacts_idb',
      ),
    ),
  ),
);

定义纸张化思想中的关系

一旦创建了关系的元数据,元数据文件将在纸张模型中提供引用:

./custom/Extension/application/Ext/TableDictionary/<relationship name>.php

此文件将包含“包含”引用元数据文件:

<?php

    include('custom/metadata/<relationship name>MetaData.php');

?>

纸塑例子

Custom 1:M之间的帐户和联系人之间的关系将产生以下Tablectionary文件:

./custom/extension/pplication/ext/tabledictionary/accounts_contacts_1.php.

<?php

    //WARNING: The contents of this file are auto-generated

    include('custom/metadata/accounts_contacts_1MetaData.php');

?>

如果您通过Studio创建了关系,将自动创建上述文件。如果您手动创建文件,请运行快速修复和重建并运行生成的任何SQL脚本。快速修复和重建将重建文件映射和关系缓存以及填充关系表中的关系。

最后修改:2021-02-17 02:44:13