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

时间:2013-08-24 08:56:22

标签: sugarcrm

为了检索联系人,手机号码为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'));

2 个答案:

答案 0 :(得分:2)

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

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

$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补充。

答案 1 :(得分:0)

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

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