Kohana 3.3使用ORM模型的自定义SQL

时间:2013-03-06 00:33:57

标签: php sql kohana

我正在尝试在Kohana中执行自定义SQL语句。我有一个ORM模型,我已经在整个网站中广泛使用,但是出现了对高级查询的需求。有没有办法使用ORM模型执行查询?查询的一个例子是

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

2 个答案:

答案 0 :(得分:1)

Kohana有直接访问db(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();

答案 1 :(得分: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