如何在自定义入口点使用 Sugarcrm\Sugarcrm\Util\Uuid::uuid1()?

How to use Sugarcrm\Sugarcrm\Util\Uuid::uuid1() in a custom entry point?

我正在学习suitecrm。我需要使用来自自定义入口点的特定 id 创建一个新 bean,生成 id 不起作用,当我尝试此代码时

// Create bean
$testAccountBean = BeanFactory::newBean('Accounts');

// Set the new flag
$testAccountBean->new_with_id = true;

$id = Sugarcrm\Sugarcrm\Util\Uuid::uuid1();

$testAccountBean->id = $id;
$testAccountBean->name = generateRandomString();

$testAccountBeanId = $testAccountBean->save();

echo $testAccountBeanId;

我一无所获

当我检查调用 Sugarcrm\Sugarcrm\Util\Uuid::uuid1() 的结果时,return 没有任何结果。

感谢任何想法

该函数被调用create_guid,需要include/utils.php,您就可以调用它。

<?php
 if (!defined('sugarEntry')) {
    define('sugarEntry', true);
}

require_once 'data/BeanFactory.php';
require_once 'include/utils.php';
$testAccountBean = BeanFactory::newBean('Accounts');
$id = create_guid();

话虽如此 - 如果您这样做 $testAccountBean->new_with_id = true;,则意味着您将提供自己的 ID,我们使用它来插入来自其他 systems/migrations 的 ID。但是,如果您需要 GUID,只需删除该行,suitecrm 就会为您生成它。

您需要按以下方式调用它:

$testAccountBean->new_with_id = true; 
$testAccountBean->id = create_guid();

请注意,如果您使用 create_guid 函数分配了自己的 ID,则还需要设置 "new_with_id"。你可以在这个路径找到函数:include\utils.php

函数体如下:

function create_guid()
{
    $microTime = microtime();
    list($a_dec, $a_sec) = explode(' ', $microTime);

    $dec_hex = dechex($a_dec * 1000000);
    $sec_hex = dechex($a_sec);

    ensure_length($dec_hex, 5);
    ensure_length($sec_hex, 6);

    $guid = '';
    $guid .= $dec_hex;
    $guid .= create_guid_section(3);
    $guid .= '-';
    $guid .= create_guid_section(4);
    $guid .= '-';
    $guid .= create_guid_section(4);
    $guid .= '-';
    $guid .= create_guid_section(4);
    $guid .= '-';
    $guid .= $sec_hex;
    $guid .= create_guid_section(6);

    return $guid;
}