<?php namespace App\Model; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; class SelfClassifyModel extends Model { protected $connection = false; protected $table = 'self_classify'; public $timestamps = false; //生成自营分类redis public function ProduceClassRedis($class_id = '', $Redis = '') { if (empty($class_id)) { return false; } if (empty($Redis)) { $Redis = new RedisModel(); } $info = json_decode($Redis->hget('Self_SelfClassInfo', $class_id), true); if (!$info) { if (empty($this->connection)) { $this->connection = 'self'; } $info = $this->where('class_id', '=', $class_id)->select('class_id', 'class_name', 'parent_id', 'sort', 'status', 'class_icon', 'ladder', 'is_dc')->first(); if ($info) { $info = $info->toArray(); if (!empty($info['ladder'])) { $info['ladder'] = json_decode($info['ladder'], true); } $Redis->hset('Self_SelfClassInfo', $class_id, json_encode($info)); } else { return false; } } return $info; } //二级分类关联模型 public function sub_class() { return $this->hasMany(SelfClassifyModel::class, 'parent_id', 'class_id'); } //获取一二级分类(有关联关系) public function getClassList() { $classificationsExpireMinute = 5; //先去缓存里面取 $Redis = new RedisModel; $classList = $Redis->hgetall('Self_SelfClassInfo'); $classList = array_map(function ($value) { return json_decode($value, true); }, $classList); if (!$classList) { return Cache::remember('classList', $classificationsExpireMinute, function () { $field = [ 'class_id', 'class_name', 'status', 'class_icon', ]; return $this->select($field)->with([ 'sub_class' => function ($query) use ($field) { array_push($field, 'parent_id'); $query->select($field); }, ])->where('status', 1)->where('parent_id', 0) ->orderBy('sort', 'desc')->get()->toArray(); }); } } }