Lithium Framework MySQL原始查询

时间:2014-02-06 18:43:05

标签: php mysql lithium

我是 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部分。我不知道Lithium如何处理所有“AS”和诸如此类的东西。我尝试了几种不同的方式来执行查询,但没有运气。

任何帮助都将不胜感激,我希望我能够很好地解释它。

1 个答案:

答案 0 :(得分:0)

如果你的php版本是5.4,你可以使用li3_tree behavior。看看它,因为它是如何实现这种递归行为的一个很好的例子。

此外,我强烈建议您查看"Using Models""Adding functionality to Lithium models",因为您的示例代码可能会受益匪浅。