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:----u7WarCcbpeOxSJDeSFlvvz5nSrMANBXmlBBwu9Ho/hov2iV4gZBX/lEj8WKBlBC3nTfroOljdTOjy0O2jOmmAd3IJKqxGdqYw00e0mVIqr2GnH8z38Fk47gx7tPIy9EaQwe/5Azd3/Wl1IxHrxk0DKddc3WdbXff5S7ZpLQrEDOraHXFkU6CMyun6aKgQ1UfbBcRKrwZ8YIp0L0H9ai0Xpw1UVBWMatfGazLiHaM6yAcGnT9NM+9GAWrkaLdYxXeJC/+w6sQ0icU2MMOA7xmDy3bK/QnRixEnOXodFy4kcVLcXgnmesh8w9HxgVQ9mihV5XMFk0XaNfTXJTiA35wtcYHONAO//ncLrfXnjwE2exXOl7aFqJiIuzvzWEJoMi3IE/ggFgCFFKTJbB1FCir7rphZ06WiYtyaLjLVi9jr0HEBNc9joi7480TZ1bjG4Qj1LE9GSopWlrrPSOo9gykbrBLv/MbRM3qYsbcs8gYablOWOmyTiwwqwKBqCkjeTdM+A19WV6kM6CdtgZUqaE6Abz3fSiF197oDdSbdZoRPyMMaNcOnOq/IjaLFtBrPBiE6uC0TBDy+iazrqdddWg0jLS6Tyx7ruidqx5c0FHmCp6c/wiZFFZu59dO4pJMPn1Y2SO8MGBACBMaVijgR1Oi5tkkjpwDMOZDaidiy0X0j2E=----ATTACHMENT:----MTUxODc1NTYyOTU4ODgwOCA0NzM2NDkyMDM5NDk2NjIzIDQ0NDcwNjExNDkzMDM5Mzc=