public function get_children($id)
{
$query = $this->db->query("SELECT
@last_id := id AS id,
parent_id,
FIO,
@depth := IF(parent_id = ".$id.", 1, @depth + 1) AS depth,
@first := IF(id = ".$id.", 'first', null) AS first
FROM
users
FORCE INDEX (index_parent_id, PRIMARY, index_both),
(SELECT @last_id := ".$id.", @depth := -1) vars
WHERE id = ".$id." OR parent_id = @last_id OR parent_id = ".$id."
");
return $query;
}
neighbor-model-listとこのクエリを使用して、子ノードのレベルの深さを増やすにはどうすればよいですか?これで、ルートの親(関数のidで選択)とその子が得られますが、それ以上のアイデアは得られませんか?
foreach($query->result() as $q){
if($q->first == 'first')
{
$parent_id = $q->parent_id;
break;
}
}
function print_list($array, $parent=0) {
print "<ul>";
foreach ($array as $row) {
if ($row->parent_id == $parent) {
print "<li>$row->FIO";
print_list($array, $row->id); # recurse
print "</li>";
} }
print "</ul>";
}
echo print_list($query->result(), $parent_id);
次に、それをビューファイルにレンダリングします...mysqlクエリの深さを増やすために何を変更または確認するかについてのヘルプまたはアドバイスをお願いします。