laravel - Laravel Eloquent 条件来获取层次结构级别
问题描述
Laravel Eloquent 条件来获取层次结构级别。
我有一个名为的表routes
,它是self-referencing
样本数据:
(PK)
Id title route_id
1 users null
2 home null
3 foo 1
4 bar 3
5 hoge 3
我想要一个根据其层次结构获取路由的功能
$this->routes->getByHierarchyLevel(1);
// results
Id title route_id
1 users null
2 home null
$this->routes->getByHierarchyLevel(2);
// results
Id title route_id
3 foo 1
$this->routes->getByHierarchyLevel(3);
// results
Id title route_id
4 bar 3
5 hoge 3
这个有可能有一个单一的链式查询构建器/雄辩的构建器吗?
我已经为此做了一个自定义函数,但它是一个循环查询,或者另一种解决方案是获取所有并过滤。
解决方案
我建议level
在您的路由表中引入一个新列,并在插入时检测它们的嵌套级别并将其保存在您的表中,这样您就可以轻松执行过滤器而无需任何额外开销,否则您将需要复杂/昂贵的查询能够检测它们的水平并应用过滤器
ID | 标题 | route_id | 等级 |
---|---|---|---|
1 | 用户 | 无效的 | 1 |
2 | 家 | 无效的 | 1 |
3 | 富 | 1 | 2 |
4 | 酒吧 | 3 | 3 |
5 | 霍格 | 3 | 3 |
推荐阅读
- python - pycharm:有点添加 % 作为插入对?
- python - SCRAPY分页:没有分页编号的情况下,有没有办法用scrapy抓取网站?
- php - Amazon S3:未捕获的错误:找不到类“S3Client”
- python - 从值列表转换为 scipy 稀疏矩阵的最有效方法是什么?
- android - 如何在 Kotlin 中保存以前的活动数据,以便在重新打开它时仍然存在相同的数据?
- r - 用于替换向量值的 For 循环
- java - 加密密钥是 java 和 iOS 的区别
- python - mitmweb 中的 MemoryError:限制流量?
- apache-flink - 尚不支持处理时时间连接
- python - django 3.1 多语言站点中断登录