Я собираюсь дать 100 бонусных баллов за ответ на этот вопрос
Итак, у меня очень сложный вопрос о рекурсиях - как получить все элементы, подсчет категории и всех дочерних элементов, которые содержат этот родительский элемент и более глубокие до конца?
У меня есть таблица:
+----+---------------+-----------------+
| id | category name | category_parent |
+----+---------------+-----------------+
| 1 | cars | 0 |
+----+---------------+-----------------+
| 2 | real estate | 0 |
+----+---------------+-----------------+
| 3 | clothes | 0 |
+----+---------------+-----------------+
| 4 | bmw | 1 |
+----+---------------+-----------------+
| 5 | audi | 1 |
+----+---------------+-----------------+
| 6 | 100 | 5 |
+----+---------------+-----------------+
| 7 | 80 | 5 |
+----+---------------+-----------------+
| 8 | A4 | 5 |
+----+---------------+-----------------+
| 9 | QUATRO | 8 |
+----+---------------+-----------------+
| 10 | TDI | 8 |
+----+---------------+-----------------+
| 11 | Black | 9 |
+----+---------------+-----------------+
| 12 | White | 9 |
+----+---------------+-----------------+
| 13 | 2 doors | 11 |
+----+---------------+-----------------+
| 14 | 5 doors | 11 |
+----+---------------+-----------------+
а таблица моих продуктов выглядит так:
+----+---------------+-----------------+
| id | category_id | name |
+----+---------------+-----------------+
и, например, я хочу считать все элементы, находящиеся в категории cars
. Поэтому в основном я должен передать эту категорию id (1)
и как-то сделать рекурсию для подсчета всех элементов. Но я понятия не имею, как с этим бороться, потому что дети этой категории могут быть неограниченными.
Поэтому, когда я хочу знать все элементы этого родительского счета, я должен сделать что-то вроде этого:
1++:
4++
5++:
6++
7++
8++:
9++:
11++:
13++
14++
12++
10++
Надеюсь, вы поймете, что мне нужно, и дайте мне какое-нибудь предложение, которое могло бы мне помочь.
тоже, это начало, которое я сделал до сих пор - я мог бы его реализовать, но в будущем я застрял в рекурсии... так что ничего не стоит.
public function get_category_tree_id_list($cat_id, $list_array = FALSE)
{
if ( !$list_array ){
$items = $this->system->_getCustomTableData('categories', array(array('category_parent' => $cat_id)), 'id DESC');
$this->__tmp['id_list'] = [];
foreach ( $items as $key => $value ) {
$this->__tmp['id_list'][] = $value['id'];
}
}
}