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 から 1 行だけをフェッチして 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 に答える