Как применить функцию в предложении where с доктриной 1.2 - PullRequest
1 голос
/ 05 октября 2011

Представьте, что я хочу найти номер телефона в моей БД, но они сохраняются в разных форматах

Пример: 12345678 13.36.15.36 13.654.365

Как лучше всего с доктриной найти данный телефон.

Хотел бы я сделать что-то подобное

Doctrine_Core::getTable('user')->create('u')->where(str_replace('.', '', u.phone) = ?, $phone)

Есть ли какой-нибудь способ достичь этого?

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Я пытался использовать функции sql в методе выбора, как concat и date_format.Я не понимаю, почему замена не будет работать.

Попробуйте:

$q = Doctrine_Query::create()
     ->select("REPLACE(telnumber,'.','') as tel")
     ->from("user")
     ->where('tel = ?',123456);

Чтобы получить результаты в формате массива:

$q->execute(array(),Doctrine_Core::HYDRATE_ARRAY);
0 голосов
/ 05 октября 2011

Вы можете использовать mySQL Заменить :

SELECT replace(`telnumber`, '.', '') as 'telnumbers' FROM `yourtable` where `telnumbers`=123456

Где telnumber - это поле, содержащее номера телефонов, yourtable - это имя вашей таблицы, а 123456это номер, который вы ищете ..

Вы можете вкладывать операторы REPLACE, если хотите удалить другие символы из поля номера телефона перед поиском, и / или также использовать telnumbers LIKE "%123456%" или аналогичный ...

...