SugarCRM:如何使用sugar内部函数检索复杂的SQL语句?

SugarCRM:如何使用sugar内部函数检索复杂的SQL语句?,sugarcrm,Sugarcrm,为了检索手机号码为09362724853的联系人,我使用以下代码: $newSMS_contact = new Contact; $newSMS_contact->retrieve_by_string_fields(array('phone_mobile'=>'09362724853')); 如何检索手机号码为09362724853或9362724853或带有内部功能的获取完整的联系人列表(“”,'contacts.phone_mobile LIKE\'%9362724853\“”

为了检索手机号码为09362724853的联系人,我使用以下代码:

$newSMS_contact = new Contact;
$newSMS_contact->retrieve_by_string_fields(array('phone_mobile'=>'09362724853'));
如何检索手机号码为
09362724853
9362724853
或带有内部功能的
<989362724853
的联系人

这不起作用:

$newSMS_contact = new Contact;
$newSMS_contact->retrieve_by_string_fields(array('phone_mobile'=>'09362724853', 'phone_mobile'=>'9362724853', 'phone_mobile'=>'+989362724853'));

问题是,您试图利用的功能是为其他目标创建的。因为它只从DB中获取一行并用它填充Bean,所以参数数组将变成一个由运算符分隔的字符串。但你的情况完全不同

我建议使用另一种不太方便但更可靠的方法:

$contact_bean  = new Contact();
$contacts_list = $contact_bean->get_full_list(null, '(phone_mobile = "09362724853" OR phone_mobile = "9362724853" OR phone_mobile = "+989362724853")');
最终,您将拥有一个bean数组。
对于某些模块,您可能需要在SQL增补中使用字段定义的表别名。

问题是,您尝试使用的函数是为其他目标创建的。因为它只从DB中获取一行并用它填充Bean,所以参数数组将变成一个由运算符分隔的字符串。但你的情况完全不同

我建议使用另一种不太方便但更可靠的方法:

$contact_bean  = new Contact();
$contacts_list = $contact_bean->get_full_list(null, '(phone_mobile = "09362724853" OR phone_mobile = "9362724853" OR phone_mobile = "+989362724853")');
最终,您将拥有一个bean数组。
对于某些模块,您可能需要在SQL增补版中使用字段定义的表别名。

如果我是您,在将电话号码放入系统时,我会有严格的规则,以便您可以确保您的电话号码遵循数据库中的特定格式。(类似于E.164:)您可以使用具有Javascript和服务器端验证的自定义SugarField(或重写现有的SugarField)强制执行规则


这样,您就不必担心这段代码中的逻辑或您想处理电话号码的任何其他地方。

如果我是您,当电话号码放入系统中时,我会有严格的规则,这样您就可以确保您的电话号码遵循数据库中的特定格式。(类似于E.164:)您可以使用具有Javascript和服务器端验证的自定义SugarField(或重写现有的SugarField)强制执行规则


这样,您就不必担心这段代码中的逻辑或您想要处理电话号码的任何其他地方。

我使用izeno_sms模块,该模块可以将sms发送到其他sugar模块中的任何字段!因此,我无法检查sugar模块的所有字段是否为有效电话号码。糖是一个巨大的系统,应该有一个系统的方式来回答我的问题@HPM如果您制作了一个表示E.164电话字段的自定义SugarField,并更改了电话号码字段的字段类型,您将能够轻松地控制所有您喜欢的内容。这种方式将为您提供一个单一的位置来控制您可能拥有的许多电话字段的逻辑。izeno_sms模块可以使用例如联系人姓名(!)来发送sms。这意味着,如果联系人姓名为“hasan”,则会向以下号码发送短信:hasan。当然,短信提供商不能发送此短信,但假设我有一个联系人列表,在姓名字段中有电话号码。更改联系人模块中姓名的字段类型是不合理的。我使用izeno_sms模块,该模块可以向其他模块中的任何字段发送sms!因此,我无法检查sugar模块的所有字段是否为有效电话号码。糖是一个巨大的系统,应该有一个系统的方式来回答我的问题@HPM如果您制作了一个表示E.164电话字段的自定义SugarField,并更改了电话号码字段的字段类型,您将能够轻松地控制所有您喜欢的内容。这种方式将为您提供一个单一的位置来控制您可能拥有的许多电话字段的逻辑。izeno_sms模块可以使用例如联系人姓名(!)来发送sms。这意味着,如果联系人姓名为“hasan”,则会向以下号码发送短信:hasan。当然,短信提供商不能发送此短信,但假设我有一个联系人列表,在姓名字段中有电话号码。在contacts模块中更改名称的字段类型是不合理的。至少它起作用了,但有一点不同:$bean=BeanFactory::getBean('contacts')$联系人列表=$bean->获取完整的联系人列表(“”,'contacts.phone_mobile LIKE\'%9362724853\“”);喜欢的说法不是问题。BeanFactory::getBean是关键!是的。。。我错过了一个错误的时刻,抱歉-当你调用Sugar原生类(帐户、联系人、潜在客户等)时,你必须用单数写出他们的名字。(例如,$contact=new contact();$account=new account);/*但是*/$contact=loadBean('Contacts');//等等……)至少它起作用了,但有一点不同:$bean=BeanFactory::getBean('Contacts')$联系人列表=$bean->获取完整的联系人列表(“”,'contacts.phone_mobile LIKE\'%9362724853\“”);喜欢的说法不是问题。BeanFactory::getBean是关键!是的。。。我错过了一个错误的时刻,抱歉-当你调用Sugar原生类(帐户、联系人、潜在客户等)时,你必须用单数写出他们的名字。(例如,$contact=new contact();$account=new account);/*但是*/$contact=loadBean('Contacts');//等等……)