Category.php 1.6 KB
<?php

namespace App\Models\Product;


use App\Models\Base;
use App\Models\RouteMap;
use App\Services\Facades\Upload;
use Illuminate\Database\Eloquent\SoftDeletes;

class Category extends Base
{
    use SoftDeletes;

    //设置关联表名
    protected $table = 'gl_product_category';

    const STATUS_ACTIVE = 1;

    /**
     * 子分类
     * @var array
     */
    protected $child_ids_arr = [];


    protected $appends  = ['route'];

    public function getRouteAttribute(){
        return RouteMap::getRoute(RouteMap::SOURCE_PRODUCT_CATE, $this->id, $this->project_id);
    }

    public function getImageAttribute($value)
    {
        return Upload::path2url($value);
    }

    public function setImageAttribute($value)
    {
        $this->attributes['image'] = Upload::url2path($value);
    }


    /**
     * 获取指定分类的所有子分类IDS(包括自己)
     * @param $id
     * @return array
     * @author zbj
     * @date 2023/4/28
     */
    public function getChildIdsArr($id)
    {
        $this->child_ids_arr = [$id];
        return $this->getChildrenIdArr($id);
    }

    /**
     * 递归获取指定分类的所有子孙
     * @param $id
     * @return array
     * @author zbj
     * @date 2023/4/28
     */
    protected function getChildrenIdArr($id)
    {
        $list = parent::where("pid", $id)->pluck('pid', 'id');
        if ($list) {
            foreach ($list as $id => $pid) {
                $this->child_ids_arr[] = $id;
                $this->getChildrenIdArr($id);
            }
        }
        return $this->child_ids_arr;
    }
}