gpt4 book ai didi

php - Laravel 5.5 多级菜单查询顺序

转载 作者:行者123 更新时间:2023-11-29 18:10:38 25 4
gpt4 key购买 nike

我试图获取一个查询中的所有链接,这些链接按parent_id、级别、权重排序,以避免递归。

我在模型中定义了递归关系,一切正常,但我宁愿避免使用它们。

/**
* Get parents recursive.
*
* @return mixed
*/
public function parentRecursive()
{
return $this->parent()->with(['parentRecursive']);
}

/**
* Parent.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function parent()
{
return $this->belongsTo(Link::class, 'parent_id');
}

/**
* Get children recursive.
*
* @return mixed
*/
public function childrenRecursive()
{
return $this->children()->with(['childrenRecursive'])->orderBy('weight', 'asc');
}

/**
* Children.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function children()
{
return $this->hasMany(Link::class, 'parent_id');
}

下拉菜单应如下所示:

-Level 1
--Level 1.1
--Level 1.2
---Level 1.2.1
---Level 1.2.2
--Level 1.3
-Level 2
--Level 1.1
-Level 3
--Level 1.1
-Level 4
--Level 1.1
-Level 5

最佳答案

我建议使用嵌套集(例如 https://github.com/etrepat/baum 包)。

它将允许您执行以下操作:

$tree = Category::where('name', '=', 'Books')->first()->getDescendantsAndSelf()->toHierarchy();

它返回一个集合树并只接受一个查询。

关于php - Laravel 5.5 多级菜单查询顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47441861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com