| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | <?phpnamespace app\common\model;use think\Model;/** * 分类模型 */class Category extends Model{    // 开启自动写入时间戳字段    protected $autoWriteTimestamp = 'int';    // 定义时间戳字段名    protected $createTime = 'createtime';    protected $updateTime = 'updatetime';    // 追加属性    protected $append = [        'type_text',        'flag_text',    ];    protected static function init()    {        self::afterInsert(function ($row) {            if (!$row['weigh']) {                $row->save(['weigh' => $row['id']]);            }        });    }    public function setFlagAttr($value, $data)    {        return is_array($value) ? implode(',', $value) : $value;    }    /**     * 读取分类类型     * @return array     */    public static function getTypeList()    {        $typeList = config('site.categorytype');        foreach ($typeList as $k => &$v) {            $v = __($v);        }        return $typeList;    }    public function getTypeTextAttr($value, $data)    {        $value = $value ? $value : $data['type'];        $list = $this->getTypeList();        return $list[$value] ?? '';    }    public function getFlagList()    {        return ['hot' => __('Hot'), 'index' => __('Index'), 'recommend' => __('Recommend')];    }    public function getFlagTextAttr($value, $data)    {        $value = $value ? $value : $data['flag'];        $valueArr = explode(',', $value);        $list = $this->getFlagList();        return implode(',', array_intersect_key($list, array_flip($valueArr)));    }    /**     * 读取分类列表     * @param string $type   指定类型     * @param string $status 指定状态     * @return array     */    public static function getCategoryArray($type = null, $status = null)    {        $list = collection(self::where(function ($query) use ($type, $status) {            if (!is_null($type)) {                $query->where('type', '=', $type);            }            if (!is_null($status)) {                $query->where('status', '=', $status);            }        })->order('weigh', 'desc')->select())->toArray();        return $list;    }}
 |