Php 如何在适合CRM的模块默认ID字段中添加自动增量

Php 如何在适合CRM的模块默认ID字段中添加自动增量,php,sugarcrm,suitecrm,Php,Sugarcrm,Suitecrm,是否可以在套件CRM的模块默认ID字段中添加自动增量。ID字段包含36个字符类型 SuiteRM中是否有可用的设置选项 我在SuiteRM中实现自动递增字段的方式如下: 使用SuiteCRM Studio创建TextField类型的自定义字段。例如,将字段产品编号添加到模块产品。这将在数据库表aos\u products\u cstm中创建字段product\u number\u c。该字段应不是必需的 从模块Products的编辑视图中删除新创建的字段product\u number 在数据

是否可以在套件CRM的模块默认ID字段中添加自动增量。ID字段包含36个字符类型

SuiteRM中是否有可用的设置选项


我在SuiteRM中实现自动递增字段的方式如下:

  • 使用SuiteCRM Studio创建
    TextField
    类型的自定义字段。例如,将字段
    产品编号
    添加到模块
    产品
    。这将在数据库表
    aos\u products\u cstm
    中创建字段
    product\u number\u c
    。该字段应不是必需的

  • 从模块
    Products
    的编辑视图中删除新创建的字段
    product\u number

  • 在数据库中,创建表
    product\u number\u seq
    ,该表只有字段
    id
    ,这是一个自动递增字段。可以将名称
    产品编号\u seq
    更改为您喜欢的任何名称

  • 在表上创建触发器
    aos\u products\u cstm

    CREATE DEFINER=`root`@`localhost` TRIGGER product_number_insert
    BEFORE INSERT ON aos_products_cstm
    FOR EACH ROW
    BEGIN
      INSERT INTO product_number_seq VALUES (NULL);
      SET NEW.product_number_c = LAST_INSERT_ID();
    END
    
如果执行此操作,在表
aos\u products\u cstm
上每次插入之前,触发器将插入表
product\u number\u seq
,并提供
NULL
作为值,因此将插入下一个int(因为它是一个自动递增字段)。然后,它将在
aos\u products\u cstm
中插入的记录的
product\u number\u c
字段设置为
LAST\u INSERT\u ID()
-的结果,这将是
product\u number\u seq
最近插入的值


很明显,这是黑客攻击,所以您可能不喜欢它,但我已经使用过它,而且它很有效。

根据我的经验,自动输入字段的目标通常是创建一个人性化的ID字段,例如案例ID、报价ID、账号。这与CRM系统的GUID不同,尽管两者实际上都是唯一的标识符。简单地说,人性化的ID字段更容易与同事沟通(“嘿,吉姆,打开账户1505”比“打开账户6ccd780c-baba-1026-9564-5b8c656024db”更容易”)

考虑到这一点,这里的目标是完全添加一个新的整数字段,并确保它自动递增。SugarCRM支持开箱即用的自动递增整型字段,但它是代码级定制。这不适用于默认的id字段,因为这是一个varchar字段

让我们以专业版的报价字段“报价编号”为例

因此,vardef在
modules/Quotes/vardefs.php
中定义:

<?php
$dictionary['Quote']['fields'][] = 
    'quote_num' => array(
        'name' => 'quote_num',
        'vname' => 'LBL_QUOTE_NUM',
        'type' => 'int',
        'auto_increment' => true,
        'readonly' => true,
        'required' => true,
        'unified_search' => true,
        'full_text_search' => array('enabled' => true, 'boost' => 3),
        'disable_num_format' => true,
        'enable_range_search' => true,
        'options' => 'numeric_range_search_dom',
    );

我不认为在管理中有任何关于此的选项/设置,如果您以编程方式创建自定义模块,那么这是可能的,我从未尝试过。@Bhaskar感谢重播,我创建了自定义模块,我想在ID字段中添加自动增量。
<?php
$dictionary['Quote']['indices'][] = 
    array(
        'name' => 'quote_num',
        'type' => 'unique',
        'fields' => array('quote_num', 'system_id')
    );
 $dictionary['Quote']['fields']['quote_num']['auto_increment'] = true;
 $dictionary['Quote']['fields']['quote_num']['disable_num_format'] = true;