php - 如何在 JSON Laravel 中获取子类别和子类别用户类别下的孩子
问题描述
这是一个非常常见的问题,但我无法以 JSON 格式为 API 制作它。我是一个表类别,其中存储了三层类别。类别->子类别->子项。我想在 API 格式中得到这个。
就像是。
Category
sub-category-1
sub-category-2
child-2-1
child-2-2
sub-category-3
我尝试使用代码
$allData = array();
// get all parent category
$categories = Category::where(['status' => 1, 'parent_id' => 0])->get();
foreach ($categories as $key=>$sub) {
// now take one by one it's child category
$allData[$key]['parent'] = $sub->name;
$subCategory = Category::where('status', 1)->where('parent_id', '=', $sub->id)->get();
$subCat = array();
// set parent category title
foreach ($subCategory as $k=>$subcat) {
$subCat[$subcat->id] = $subcat->name;
}
// set subcategory array
$allData[$key]['subcategory'] = $subCat;
}
return $allData;
我得到了这个结果不是我不知道如何获得孩子的价值
数据库看起来像
解决方案
最后,我解决了这个
$parents = Category::where('parent_id', 0)->where('status', 1)->orderBy('sort_order', 'asc')->get();
foreach ($parents as $parent) {
$childs = Category::where('parent_id', $parent->id)->where('status', 1)->orderBy('sort_order', 'asc')->get();
if (count($childs) > 0) {
$subCat = array();
$players = array();
$roster[$parent->name] = $players;
foreach ($childs as $i => $child) {
$subchilds = Category::where('parent_id', $child->id)->where('status', 1)->orderBy('sort_order', 'asc')->get();
if (count($subchilds) > 0) {
$roster[$parent->name][$child->name] = $subCat;
foreach ($subchilds as $subchild) {
$roster[$parent->name][$child->name][$subchild->id] = $subchild->name;
}
}else{
$roster[$parent->name][$child->name] = $players;
}
}
}
}
return $roster;
推荐阅读
- ruby - <<- 符号在rails中是什么意思?
- wordpress - 如何在帖子加载到 WordPress 页面之前更新帖子?
- javascript - React.js - 将状态项设置为数组项,在其他状态项中引用,然后在数组项更改时更新状态
- reactjs - 获取 cookie 时反应状态总是落后一步
- c++ - 26 位韦根数有多少种十进制数的可能性?
- google-kubernetes-engine - GKE Ingress 打开端口
- xaml - 带有 xamarin 表单图标的自定义输入框(android,ios)
- python-3.x - 如何使用大熊猫数据帧的标题创建单行熊猫数据帧
- crystal-reports - Crystal Report Split():拆分名称
- cmake - 如何使用 cpack/cmake 生成具有特定文件组织的 nuget 包?