1

在使用 Studio 的会议模块中,我向帐户模块添加了一对多的关系。当我保存会议条目并使用帐户添加相关条目时,相关帐户的详细信息未显示在帐户子面板中。我正在使用最新版本的 SugarCRM。

提前致谢。

4

1 回答 1

1

创建一个逻辑挂钩以实现您想要的结果:

自定义/模块/会议/logic_hooks.php

$hook_array['before_save'] = Array();
$hook_array['before_save'][] = Array(1, 'Set Account relationship', 'custom/modules/Meetings/AccountRelationshipHook.php', 'AccountRelationshipHook', 'setAccountRelationship');
$hook_array['before_delete'] = Array();
$hook_array['before_delete'][] = Array(1, 'Remove Account relationship', 'custom/modules/Meetings/AccountRelationshipHook.php', 'AccountRelationshipHook', 'deleteAccountRelationship');

然后在你的逻辑钩子中创建方法来使用你新定义的关系'meetings_accounts'(或你命名的任何东西)并添加或删除帐户记录。由于它是一对多的,因此您要确保每个会议记录只有一个帐户。另外,为了保持整洁,当会议被删除时,也会通过 deleteAccountRelationship() 方法删除记录的关系。

自定义/模块/会议/AccountRelationshipHook.php

class AccountRelationshipHook {

    public function setAccountRelationship(&$bean, $event, $arguments) {
        if ($bean->parent_type == 'Accounts') {
            $bean->load_relationship('meetings_accounts');
            if ($bean->parent_id != $bean->fetched_row['parent_id']) {
                $bean->meetings_accounts->delete($bean->id, $bean->fetched_row['parent_id']);
            }
            $bean->meetings_accounts->add($bean->parent_id);
        }
    }

    public function deleteAccountRelationship(&$bean, $event, $arguments) {
        if ($bean->parent_type == 'Accounts') {
            $bean->load_relationship('meetings_accounts');
            $bean->meetings_accounts->delete($bean->id, $bean->parent_id);
        }
    }
}
于 2013-03-03T22:07:38.843 回答