#php #database #codeigniter
#php #База данных #codeigniter
Вопрос:
Я пытаюсь получить список предков определенной категории.
Сначала у меня есть идентификатор категории для начала текущей категории.
МОЯ таблица БД категорий:
ID NAME PARENT
1 Cars 0
2 Saloons 1
3 Wagons 1
4 Family 2
Я пытаюсь вернуть этот список
Cars Saloons Family,
только зная идентификатор дочернего элемента
Используя ActiveRecord и Codeignighter, я придумал это в своей модели
public function get_ancestors( $category_id = 0 , amp;$parentcategory=null)
{
$category = $this->get('id',$category_id);
if($parentcategory)$category->parent =$parentcategory;
if($category)
{
if($category->parent_id > 0)
{
return $this->get_ancestors($category->parent_id, $category );
}
return $category;
}
return array();
}
Я не уверен, что я сделал неправильно (см. Результат ниже)
array (size=1)
0 =>
object(stdClass)[144]
public 'id' => string '4' (length=2)
public 'name' => string 'Family' (length=5)
Более или менее ожидая чего-то вроде
array (size=1)
0 =>
object(stdClass)[144]
public 'id' => string '4' (length=2)
public 'name' => string 'Family' (length=5)
public 'parent' => array (size=1)
0 =>
object(stdClass)[144]
public 'id' => string '2' (length=2)
public 'name' => string 'Saloon' (length=5)
public 'parent' => array (size=1)...
Ответ №1:
Вы должны передавать $tree
по ссылке.
public function get_ancestors( $category_id = 0 , amp;$tree = array() )
Обратите amp;
внимание на строку выше.
Комментарии:
1. Вы должны решить, возвращаете ли вы результат или изменяете значение, переданное по ссылке. Выполнение обоих только запутает вас.