设置和虚拟数据
我有一个简单的模型叫做分类(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 中映射此关系,以便可以查询模型并获取其父项(它始终会有一个父项),以及如果存在,则获取子类别。
我已经在 Category 模型中定义了这个关系,使用:
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)时,输出的结果与我预期的不符。