我正在尝试在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
答案 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。