如果你知道我的表看起来像这些
[category]
-category_id
-lft
-rgt
....
[catinfo]
-catinfo_id
-category_id
-lang_id
-name
....
[lang]
-lang_id
-language
如何在Kohana ORM中重写此查询?
SELECT node.category_id, catinfo.name, COUNT("parent.category_id") - 1 AS depth
FROM category AS parent, category AS node
LEFT JOIN catinfo
ON catinfo.category_id = node.category_id
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND catinfo.lang_id = 1
GROUP BY node.category_id
HAVING depth <= 3
ORDER BY node.lft
我没有任何线索如何开始。
答案 0 :(得分:0)
最好不要使用ORM编写这样复杂的查询,只使用查询构建器或普通查询。
如果使用查询构建器,查询可能看起来像这样:
DB::select(
'node.catergory_id',
'catinfo.name',
array(DB::expr('COUNT(`parent.category_id`) - 1'), 'depth')
)
->from(array('category', 'parent'), array('category', 'node'))
->join('catinfo', 'LEFT')
->on('catinfo.category_id', '=', 'node.category_id')
->where('node.lft', 'BETWEEN', array('parent.lft', 'parent.rgt'))
->and_where('catinfo.lang_id', '=', 1)
->group_by('node.category_id')
->having('depth', '<=', 3)
->order_by('node.lft');