我使用Postgres和Kohana 3的ORM模块,并希望在执行比较之前使用postgres函数将已经在数据库中的值转换为小写字母。如何在Kohana中使用数据库函数3 ORM select查询
在SQL我会写:
select * from accounts where lower(email) = '[email protected]';
在Kohana中我想编写这样的事:
$user = ORM::factory('user')
->where('lower(email)', '=', strtolower('[email protected]'))
->find();
但是,这给出了一个错误,因为ORM试图推导出列名'降低(电子邮件)'而不仅仅是'电子邮件'。
我是Kohana和ORM的新手,所以可以给我提供相同结果的替代方案也很有用。
警告:您将要替换DB函数('LOWER')与PHP的一个('strtolower') - 他们可能会或可能不会行为相同的方式取决于多种因素(语言环境,编码,性质输入数据等)。 – 2010-07-01 22:40:01
良好的调用,我添加了一个自定义的DB :: lower方法到我的应用程序,它转义了传入的值并将其包装在较低的位置,因此我现在可以写入: ... - > where(DB :: expr('lower (email)'),'=',DB :: lower($ email)) – 2010-07-01 23:33:18