2013-03-06 88 views
0

我試圖在Kohana內執行自定義的SQL語句。我有一個ORM模型,我已經在整個站點中廣泛使用,但是需要高級查詢。有沒有辦法使用ORM模型執行查詢?一個查詢的例子是Kohana 3.3使用ORM模型的自定義SQL

SELECT 
    sum(TotalSales) AS sum, 
    DATE(adddate(SaleDate, INTERVAL (6-weekday(SaleDate)) DAY)) AS dt 
FROM Sales 
GROUP BY dt 
ORDER BY dt DESC 

回答

1

Kohana有直接訪問數據庫的方法(http://kohanaframework.org/3.0/guide/api/DB#query)。只需創建如下功能:

$query = DB::query(Database::SELECT, 'SELECT 
    sum(TotalSales) AS sum, 
    DATE(adddate(SaleDate, INTERVAL (6-weekday(SaleDate)) DAY)) AS dt 
FROM Sales 
GROUP BY dt 
ORDER BY dt DESC'); 

$ qresult = $ query-> execute();

0

這樣的聲明不應該(也可能不能)通過Kohana的ORM完成。 ORM被設計爲將表格行作爲對象處理並管理它們之間的關係。

不管怎樣,在Kohana中您可以使用Kohana的出色的查詢生成器的方法,如:

$result = DB::select(
     array(
      DB::expr('sum(`TotalSales`)'), 
      'sum'), 
     array(
      DB::expr('DATE(adddate(`SaleDate`, INTERVAL (6-weekday(`SaleDate`)) DAY))', 
      'dt'))) 
    ->from('Sales') 
    ->group_by('dt') 
    ->order_by('dt', 'DESC') 
    ->execute(); 

然後簡單:

$rows = $result->as_array(); 

重要的是要記住,你應該在查詢中使用DB::expr()的表情是很重要的建造者 - this is new from Kohana 3.3.0