0

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

$newSMS_contact = new Contact;
$newSMS_contact->retrieve_by_string_fields(array('phone_mobile'=>'09362724853'));

用糖内部函数检索手机号码为09362724853 OR 9362724853 OR的联系人怎么样? +989362724853

这不起作用:

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

2 回答 2

3

问题是您尝试使用的功能是为其他目标创建的。由于它只从 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 补充中。

于 2013-08-24T19:50:15.810 回答
0

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

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

于 2013-08-24T20:34:20.367 回答