0

我正在尝试在 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
4

2 回答 2

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 = $查询->执行();

于 2013-03-06T00:47:48.643 回答
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()在查询构建器中使用 for 表达式 -这是 Kohana 3.3.0 中的新功能

于 2013-03-06T09:31:45.090 回答