同一模型上的Laravel父/子关系
设置和虚拟数据
我有一个名为Category的简单模型,它具有以下架构:
|----------------------------------------------|
| cat_id | cat_name | parent_id |
|----------------------------------------------|
| 1 | Home | 0 |
|----------------------------------------------|
| 2 | Products | 1 |
|----------------------------------------------|
| 3 | Services | 1 |
|----------------------------------------------|
| 4 | Product A | 2 |
|----------------------------------------------|
| 5 | Product B | 2 |
|----------------------------------------------|
所需输出
因此,您可以看到,我们将得到一个非常直接的层次结构,如下所示:
Home
- Products
- Product A
- Product B
- Services
问题
我试图在Laravel 4.2中映射这种关系,以便我可以查询模型并获取其父级(它将始终具有父级)和子类别(如果存在)。
我使用以下方法在类别模型中定义了关系:
public function children()
{
return $this->hasMany('Category', 'parent_id', 'cat_id');
}
public function parent()
{
return $this->belongsTo('Category', 'parent_id');
}
问题
我可以让父名工作,使用
$category = Category::findOrFail($id);
return $category->parent->cat_name;
但是,我不明白如何获取子对象。
我试过了:
$category = Category::findOrFail($id);
$children = $category->children();
但是当我dd($children)时,它不会输出我所期望的。