【问题标题】:Lead Save Database Error In SuiteCRMSuiteCRM 中的潜在客户保存数据库错误
【发布时间】:2016-01-29 04:01:26
【问题描述】:

我在Leads 模块中创建了一个Logic Hook 以保存到数据库中的一个字段。问题是,当我首先保存潜在客户时,它会显示一条重复的消息:

数据库故障错误检查 SuiteCRM 日志。

如果我注释掉这段代码,Lead 就会被保存。

LogicHook:

<?php

class LeadData
{
    public function leadSaveData(&$bean, $events, $arguments)
    {
        $stateId = $bean->state_c;

        if ($stateId != "") {
            $beanst_state = BeanFactory::getBean('s1_state', $stateId); 
            $StateName = $beanst_state->name;
            $bean->resstate_c = $StateName;
        } else {
            $bean->resstate_c = "Punjab";
        }

        if (!empty($bean->mediatype_c)) {
            $mediaType = $bean->mediatype_c;
            $callstatus = $bean->callstatus_c; //for follow up
            if ($mediaType == 'Selectmedia' && $mediaType != '') {
                $bean->refrence_c = 'null';
            } else if ($mediaType == 'Refrence') {
                $bean->eventname_c = 'null';
            } else {
                $bean->mediatype_c = 'null';
                $bean->refrence_c = 'null';
                $bean->eventname_c = 'null';
            }

            if ($callstatus != 'followup') {
                $bean->calllater_c = '0000-00-00 00:00:00';
            }
            $bean->save();
        }
    }
}

【问题讨论】:

  • 大概您按照建议检查了日志。也许包含这些信息可能会帮助某人解决问题?

标签: php sugarcrm suitecrm sugarbean


【解决方案1】:

请按照您的代码中的这些步骤来纠正此错误或使其正常工作。希望对你有所帮助。

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

if (!defined('sugarEntry') || !sugarEntry)
    die('Not A Valid Entry Point');

class saveextradata_logic_hooks_class
{
    static $already_ran = false;

    function saveextradata_after_save_method(&$bean, $events, $arguments)
    {
        global $db;

        if (self::$already_ran == true) return;
        self::$already_ran = true;

        $lead_id = $bean->id;

        $stateId = $_POST['state_c'];
        $sql = "select name from s1_state where id='$stateId'";
        $query = $db->query($sql);
        $result = $db->fetchByAssoc($query);
        $statename = $result[name];

        if ($stateId != "") {
            $statename;
        } else {
            $statename = "Punjab";
        }
        if (!empty($_POST['mediatype_c'])) {
            $mediaType = $_POST['mediatype_c'];

            if ($mediaType == 'Selectmedia' && $mediaType != '') {
                $mediatype = 'Selectmedia';
                $reference = 'null';
                $eventname = $_POST['eventname_c'];
            } else if ($mediaType == 'Refrence') {
                $mediatype = 'Refrence';
                $reference = $_POST['refrence_c'];
                $eventname = 'null';
            } else {
                $mediatype = 'null';
                $reference = 'null';
                $eventname = 'null';
            }
        }

        $callstatus = $_POST['callstatus_c'];//for follow up
        if ($callstatus != 'followup') {
            $calllater = '0000-00-00 00:00:00';
        }

        /*$bean->eventname_c = $eventname;
        $bean->refrence_c = $reference;
        $bean->mediatype_c = $mediatype_c;
        $bean->calllater_c = $calllater;
        $bean->resstate_c = $statename;
        $bean->save();*/

        $leadupdate = "update leads_cstm set resstate_c='$statename',eventname_c='$eventname',refrence_c='$reference',mediatype_c='$mediatype',calllater_c='$calllater' WHERE id_c = '$lead_id'";
        $resultProductmasterdetail = $db->query($leadupdate);
    }
}

【讨论】:

  • 我分析过leads模块存在问题,当我们使用bean保存数据时,插入后会导致数据重复,因此您可以按照步骤根据特定lead更新数据..希望它对你有用..
  • 您好 Arun,非常感谢您解决了这个数据库错误。是的,这有效并解决了我的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多