如何在带有doctrine 1.2的where子句中应用函数

时间:2011-10-05 15:43:16

标签: php doctrine symfony-1.4

想象一下,我想在我的数据库中搜索一个电话号码,但它们会以不同的格式保存

例如: 12345678 13.36.15.36 13.654.​​365

找到给定手机的理论的最佳方式是什么。

我希望我可以做这样的事情

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

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

我尝试在select方法中使用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);

答案 1 :(得分:0)

您可以使用mySQL Replace

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

如果telnumber是包含电话号码的字段,yourtable是您的表格的名称,123456是您要查找的号码。

如果您希望在搜索前删除电话号码字段中的其他字符,并且/或使用telnumbers LIKE "%123456%"或类似字符,则可以嵌套REPLACE语句...