php - 从子类别中获取所有父母
问题描述
我有一张桌子
id; name; parent_id
1 xxx 0
2 ccc 0
3 zzz 1
4 yyy 3
我的目标是获得类别并获得所有父母的例子:
ID 为 4 的类别
1.xxx
3.zzz
4.yyy
到目前为止我所做的我的模型类别
class Categories extends Model
{
protected $table = 'categories';
public function parent() {
return $this->hasMany('App\Models\Categories','id');
}
public function children(){
return $this->hasMany('App\Models\Categories','parent_id');
}
}
我的控制器获得了我想要的类别:
$data['cat']= Categories::with('parent')->get();
我的刀片
@foreach ($cat as $c)
{{ $c->name }}
@endforeach
我有点困惑如何做到这一点,我尝试了 2 天找到教程并阅读其他示例,但我不明白我有点菜鸟,对不起。
谢谢您的帮助
解决方案
关系:
public function parent()
{
return $this->belongsTo(Category::class, 'parent_id');
}
public function children()
{
return $this->hasMany(Category::class, 'parent_id');
}
从父类别开始:
$parentCategories = Category::where('parent_id', '=', 0)->with('children')->get();
鉴于:
@if($parentCategories)
<div class="categories">
@foreach($parentCategories as $parent)
...
@if($parent->children())
...
@foreach($parent->children as $child)
...
@if($child->children())
...
@foreach($child->children as $c)
...
@endforeach
...
@endif
...
@endforeach
...
@endif
...
@endforeach
</div>
@endif
从子类别开始:
$childCategories => Category::where('parent_id', '!=', 0)->with('parent')->get();
鉴于:
@if($childCategories)
<div class="categories">
@foreach($childCategories as $child)
<div>{{ $child->name }}</div>
@if($child->parent)
<div style="padding-left: 5px;">{{ $child->parent->name }}</div>
@if($child->parent->parent)
<div style="padding-left: 10px;">{{ $child->parent->parent->name }}</div>
@endif
@endif
@endforeach
</div>
@endif
推荐阅读
- haskell - How do you get the most recent version of Cabal for Haskell?
- apache-spark - 通过一列中的唯一值随机拆分 DataFrame
- mysql - MYSQL - Group Contact rows with records NOT IN
- php - php -> 定时 bash 脚本总是关闭
- swift - 快速将可测试代码与静态方法调度相结合
- excel - Excel AVERAGEIFS looking up ONE of the criteria columns
- javascript - 数据绑定按键事件在 div 上不起作用
- elasticsearch - 如何从 Elastic Search 中的日志文件中获取总执行时间?
- kubernetes - Kubernetes 构建集群时出错,找不到实用程序子网
- cordova - 流星中的 CORS 与 Cordova