Category.php 1.5 KB
<?php

namespace App\Models\Product;


use App\Helper\Arr;
use App\Models\Base;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * @method static get()
 * @method static where(string $string, int $int)
 */
class Category extends Base
{
    use SoftDeletes;

    //设置关联表名
    protected $table = 'gl_product_category';
    //连接数据库
    protected $connection = 'custom_mysql';

    const STATUS_ACTIVE = 1;

    /**
     * 获取指定分类的所有子分类IDS(包括自己)
     * @param $id
     * @return array
     * @author zbj
     * @date 2023/10/17
     */
    public static function getChildIdsArr($id)
    {
        if(!$id){
            return [];
        }
        $list = self::where('status', self::STATUS_ACTIVE)->select(['id','pid'])->get()->toArray();
        $ids = [];
        Arr::findChildIds($list, $id, $ids);
        $ids[] = $id; //包含自己
        return $ids;
    }



    /**
     * 关联产品数量
     * @param $cate_id
     * @return mixed
     * @author zbj
     * @date 2023/4/28
     */
    public static function getProductNum($cate_id){
        $cate_ids = self::getChildIdsArr($cate_id);
        $str = 0;
        foreach ($cate_ids as $v){
            $info = self::where('pid',$v)->first();
            if($info){
                continue;
            }else{
                $count = Product::where('category_id','like','%,'.$v.',%')->count();
                $str = $str+$count;
            }
        }
        return $str;
    }
}