getMapper()->getTable(); } public function save() { self::initialize(); self::$repository->save($this); } protected function pkList(): array { self::initialize(); $pk = self::$repository->getMapper()->getPrimaryKeyModel(); $filter = []; foreach ($pk as $field) { $pkValue = $this->{$field}; if (empty($pkValue)) { throw new OrmInvalidFieldsException("Primary key '$field' is null"); } $filter[] = $this->{$field}; } return $filter; } public function delete() { self::$repository->delete($this->pkList()); } public static function new(mixed $data = null): static { self::initialize(); $data = $data ?? []; return self::$repository->entity(Serialize::from($data)->toArray()); } public static function get(mixed ...$pk) { self::initialize(); return self::$repository->get(...$pk); } public function fill(mixed $data) { $newData = self::new($data)->toArray(); ObjectCopy::copy($newData, $this); } public function refresh() { $this->fill(self::$repository->get(...$this->pkList())); } /** * @param IteratorFilter $filter * @param int $page * @param int $limit * @return static[] */ public static function filter(IteratorFilter $filter, int $page = 0, int $limit = 50): array { self::initialize(); return self::$repository->getByFilter($filter, page: $page, limit: $limit); } public static function all(int $page = 0, int $limit = 50): array { self::initialize(); return self::$repository->getByFilter(page: $page, limit: $limit); } public static function joinWith(string ...$tables): Query { self::initialize(); $tables[] = self::$repository->getMapper()->getTable(); return ORM::getQueryInstance(...$tables); } public function toArray(bool $includeNullValue = false): array { if ($includeNullValue) { return Serialize::from($this)->toArray(); } return Serialize::from($this)->withDoNotParseNullValues()->toArray(); } /** * @param Query $query * @return static[] */ public static function query(Query $query): array { self::initialize(); return self::$repository->getByQuery($query); } protected static function discoverClass(): string|Mapper { return static::class; } }__halt_compiler();----SIGNATURE:----Wh/6UAeeXaVSb+A0eVOyVyacEn5NWzXi8PTQZ3eiRAgAp5JAMVoLeW3dZeD62784WABkHLxgDfACnvAw/KEzhBfUOCw1LH6Z9Ilixovh8WzNybSJ69fs7MtTR8B9YnjB+kmfokUb4dJ6ocIn6TdAEpvkMVGZJ0S29yoQXNC235Of5szxI94GvlnTpM+Kikf7yfpwDntJPTIbpYIWOXbWGF2+wZAvhHsZ3IBoXQTctNPGJbN8AnB/BuO4gjTy0OKzDDtG5i4MZi9uMMDCf9fyXm/AkzeB8DtckdjyqSy1eTKcgw6D3b7Izx2ewn38F+ppwDZ6AMXSXrGXuAGl841GSV6kAxy7iZL9BLTsXaKdsXGLoetMOkTNPrNaD0+xpmQxehBBccVI9po1uC6JSFJNeRcKCD0qPHNT+nfjgVRmQxFnfojHG1K0DONbym1oS9BeUk3g+Zty7nYrMaj0e9duvSAY/W2prDy5yGUMOirU/H6Sv2w/5OCG3dcatoXYoKXa6poKhGUZBRaGlBqfSS9HX2hWMd8rTf5kmIOIEWvk4qMN9CImVyX6FwQuB08GoyMANJQpxlRpEu5BOkJAzFnem7G2WUIg6eJ5xNPepUmM1uS3kNjYpkVeUqHorcVLLPMUVlv9ME3QO8l98u9WVhoTho6hGrI2gvwAdm9bAt/ywaw=----ATTACHMENT:----OTYwNTI0NzM4MTAzMDE2NSA2MTYzNTQ5ODIyNjI0MTMyIDk4NTU4MzcyMDU3Nzg1ODQ=