我是Laravel的新手,我正在尝试从数据库中的表中提取嵌套的json。
基本上我在表中有一个列用于父类别,另一列用于子类别。
我想生成类似于:
的json{
"Category 1":[
{"sub category": "sub category 1"},
{"sub category": "sub category 2"},
{"sub category": "sub category 3"},
{"sub category": "sub category 4"},
{"sub category": "sub category 5"},
{"sub category": "sub category 6"},
{"sub category": "sub category 7"}
],
"Category 2":[
{"sub category": "sub category 8"},
{"sub category": "sub category 10"}
],
"Category 3": [
{"sub category": "sub category 9"}
]
}
我不太确定如何解决这个问题,因为我仍然需要掌握框架的基础知识。我尝试了以下不能完成这项任务的工作。
Route::get('subcategories', function(){
return Bikes::
groupBy('parent_category')->
lists('sub_category');
});
任何提示或指示都会非常适合。
谢谢!
答案 0 :(得分:0)
尝试:
Route::get('subcategories', function()
{
$bikes = Bikes::groupBy('parent_category')->lists('sub_category');
return $bikes->toJson();
});
答案 1 :(得分:0)
好吧我想出来了,它没有嵌套,但它会以我需要的方式使用角度。
就像使用orderBy一样简单:
return Todo::OrderBy('parent_category')->select('parent_category', 'sub_category')->get();
这让我:
[
{
parent_category: "Chores",
sub_category: "Shop"
},
{
parent_category: "Chores",
sub_category: "Cleaning"
},
{
parent_category: "Work",
sub_category: "Development"
},
{
parent_category: "Work",
sub_category: "JS"
}
]
有了这个,我可以使用angular来使用以下选项填充opgroup:
<select ng-model="todos" ng-options="t.sub_category group by t.parent_category for t in todos"></select>
答案 2 :(得分:0)
您可以为自引用表创建模型,如下所示:
class Category extends Eloquent {
public function parent()
{
return $this->belongsTo('Category', 'parent_id');
}
public function children()
{
return $this->hasMany('Category', 'parent_id');
}
}
使用它:
$category = Category::find(1);
$categoryParent = $category->parent()->first(); // Gets parent category`
$categoryChildren = $user->children()->get(); // Gets the children`