скажем, у меня есть таблица под названием категории который использует поведение дерева в приложении CakePHP 3. Если мне дается идентификатор категории, существуют ли функции, позволяющие мне проверить, является ли категория родительской категорией или функциями для получения родительской категории узла без необходимости выполнять несколько запросов поиска?
Я не мог ничего найти в Интернете.
Спасибо за любую помощь
Использование TreeBehavior parent_id
Вы можете подготовить отношения по имени ParentCategories
а также ChildrenCategories
,
$this->belongsTo('ParentCategories', [
'className' => 'Categories',
'foreignKey' => 'parent_id',
]);
$this->hasMany('ChildrenCategories', [
'className' => 'Categories',
'foreignKey' => 'parent_id',
]);
В соответствии с Cakephp 3
уже есть Дорожка Доступен искатель, чтобы найти полный путь для определенного узла / идентификатора.
Используя это, вы можете получить родительский узел, как показано ниже:
$completePath = $this->Model->find('path', ['for' => $category_id])->first();
$parentNode = $completePath['id'];
Дальнейшая ссылка: https://github.com/cakephp/cakephp/issues/12539
Надеюсь, это поможет!