'bigint',// 'companyNo' =>'varchar',//所属企业 'name' =>'varchar',//部门/公司名称 'pid' =>'bigint',//父级id 'level' =>'bigint',//部门层级 'weight' =>'int',//排序权重 'depart_link' =>'varchar',//快速查询 'is_del' =>'int',//是否删除 'addtime' =>'datetime',// 'updatetime' =>'datetime',// 'status' =>'int',//状态 0禁用1启用 ]; protected $updateTime='updatetime'; protected $createTime='addtime'; public function companyInfo(){ return $this->belongsTo(Headquarters::class,"companyNo","code")->bind(["companyName"=>"name"]); } public function getDepartLinkAttr($v){ return $this->where("id","in",array_filter(explode("-",$v)))->column("id,name"); } public function SetDepartLinkAttr($v){ return implode('-',$v); } public static function onAfterWrite(Model $model) : void{ $id =$model->id; $depart = array_filter(array_column($model->depart_link,'id')); if(!in_array($id,$depart)){ array_push($depart,$id); $model->depart_link = $depart; $model->level = count($depart); $model->save(); } } }