'int', 'user_id' => 'int', 'org_id' => 'int', 'role_id' => 'int', 'role_code' => 'varchar', 'create_at' => 'datetime', 'update_at' => 'datetime', 'delete_at' => 'datetime', 'is_role_type' => 'int', ]; protected $append = ['org_name', 'role_name']; public function org() { return $this->belongsTo(Org::class, 'org_id', 'org_id'); } public function role() { return $this->belongsTo(OrgRole::class, 'role_id', 'role_id'); } public function user() { return $this->belongsTo(User::class, 'user_id', 'user_id'); } public function getOrgNameAttr($value, $data) { $list = Org::cache(300)->column('name', 'org_id'); $org_id = $data['org_id']; return isset($list[$org_id]) ? $list[$org_id] : ''; } public function getRoleNameAttr($value, $data) { $list = OrgRole::cache(300)->column('name', 'role_id'); $role_id = $data['role_id'] ?? 0; return isset($list[$role_id]) ? $list[$role_id] : ''; } }