6
0
Fork 0

商品分类 tree

release
panliang 2022-05-17 14:41:39 +08:00
parent 6e3dc4ad4b
commit 1686325d66
2 changed files with 16 additions and 32 deletions

View File

@ -3,22 +3,29 @@
namespace App\Endpoint\Api\Http\Controllers\Product;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\ProductCategoryResource;
use App\Models\ProductCategory;
use Illuminate\Http\Request;
class ProductCategoryController extends Controller
{
/**
* 商品分类
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function index(Request $request)
{
$categories = ProductCategory::filter(['pid' => 2])->latest('sort')->get();
$list = ProductCategory::showable()->latest('sort')->get();
$data = $this->tree($list);
return ProductCategoryResource::collection($categories);
return response()->json($data);
}
protected function tree($list, $pid = null)
{
$items = $list->where('parent_id', $pid);
$data = [];
foreach($items as $item) {
$sub_data = ['id' => $item->id, 'name' => $item->name, 'icon' => $item->icon ?: ''];
$children = $this->tree($list, $item->id);
$sub_data['children'] = $children;
array_push($data, $sub_data);
}
return $data;
}
}

View File

@ -1,23 +0,0 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class ProductCategoryResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'icon' => (string) $this->icon,
];
}
}