使用Joomla数据库对象的递归Mysql查询

时间:2016-09-29 13:20:31

标签: php mysql recursion joomla

您好我试图在db中记录记录的所有子节点和子子节点 到目前为止,我有这个

function fetchNetChildren($parent, $network) {
    $db = JFactory::getDBO();
    $db->setQuery('SELECT id FROM #__sometable_clients WHERE network_referal = '.$parent.' AND networks = '.$network.' AND `status` > 0');
    $list = array();
    while (true){
        $row = $db->loadAssocList();
        $list[] = $row['id'];
        $list = array_merge($list, fetchNetChildren($row['id'], $network));
    }
    return $list;
}

当我跑这个时,我有一个500的恐怖,不知道为什么,任何提示?

1 个答案:

答案 0 :(得分:0)

我已经使用不同的方法实现了这一点,我放弃了最初的功能,并创建了另外两个返回我想要的东西。

1 - 我创建了一个mysql查询,该查询返回所提供id的所有子节点,孙子节点等的多维数组。

function getChilds($parentid, $network) {
    // query linda e maravilhosa
    $query = '
    select @pv:=id as id, network_referal from #__mytable
    join
    (select @pv:='.$parentid.')tmp
    where network_referal=@pv and networks = '.$network.' ';
    $campos = carregarcampos($query,'list');
    return $campos;
}

2 - 现在我可以操作数据$ elements并创建一个组织提供数据的php multidimentional数组

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}

所以要使用我必须运行

buildTree(getChilds($parentid, $network), $parentid)