12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- namespace app\admin\model\unishop;
- use think\Model;
- /**
- * 分类模型
- */
- class Category extends Model
- {
- // 表名
- protected $name = 'unishop_category';
- // 开启自动写入时间戳字段
- protected $autoWriteTimestamp = 'int';
- // 定义时间戳字段名
- protected $createTime = 'createtime';
- protected $updateTime = 'updatetime';
- // 追加属性
- protected $append = [
- 'type_text',
- 'flag_text',
- ];
- protected static function init()
- {
- self::afterInsert(function ($row) {
- $row->save(['weigh' => $row['id']]);
- });
- }
- public function setFlagAttr($value, $data)
- {
- return is_array($value) ? implode(',', $value) : $value;
- }
- /**
- * 读取分类类型
- * @return array
- */
- public static function getTypeList()
- {
- return ['product'=>__('Product')];
- }
- public function getTypeTextAttr($value, $data)
- {
- $value = $value ? $value : $data['type'];
- $list = $this->getTypeList();
- return isset($list[$value]) ? $list[$value] : '';
- }
- public function getFlagList()
- {
- return ['index' => __('Index')];
- }
- 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;
- }
- /**
- * 关联上一级
- * @return \think\model\relation\HasOne
- */
- public function parent()
- {
- return $this->hasOne('category', 'id', 'pid');
- }
- }
|