我对Lithium PHP Framework相当陌生,但我确实知道如何使用基本的数据库抽象方法。我正在使用一个插件来构建菜单树,并且效果很好,尽管我想对功能使用Lithium的抽象层。我坚持这一点:
public function get_menuItems($menu_id) {
// retrieve the left and right value of the $root node
$result = $this->database->query("SELECT * FROM ".$this->tbl_menu_items." WHERE menu_id = '$menu_id'");
if ($this->database->num_rows($result)) {
$right = array();
$result = $this->database->query("SELECT node.title, node.type, node.class_name, node.content, node.id AS id, node.lft AS lft, node.rgt AS rgt, (COUNT(parent.title) - 1) AS depth FROM ".$this->tbl_menu_items." AS node CROSS JOIN ".$this->tbl_menu_items." AS parent WHERE node.menu_id = '$menu_id' AND parent.menu_id = '$menu_id' AND node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.id ORDER BY node.lft");
$tree = array();
while ($row = mysql_fetch_assoc($result)) {
$tree[] = $row;
}
} else {
$tree = false;
}
return $tree;
}
$result
部分更是如此。我不知道锂怎么能处理所有的“ AS”之类的东西。我尝试了几种不同的方式执行查询,但是没有运气。任何帮助将不胜感激,我希望我能解释得足够好。
最佳答案
如果您的php版本是5.4,则可以使用li3_tree
behavior。看一下它,因为它是如何实现这种递归行为的一个很好的例子。
另外,我强烈建议您看一下"Using Models"和"Adding functionality to Lithium models",因为您的示例代码可能会受益匪浅。
关于php - Lithium Framework MySQL原始查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21611319/