我使用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