【发布时间】:2015-03-05 04:29:32
【问题描述】:
设置和虚拟数据
我有一个名为 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) 时,它没有输出我所期望的。
【问题讨论】:
-
$children 的输出是什么?