_debug = $debug; } final public function getDebug(): bool { return $this->_debug; } public static function query(): QueryBuilder { if (!isset(self::$queryBuilder)) { self::$queryBuilder = new QueryBuilder(pdo: DB::getPDO()); // Assuming DB::getPDO() gives PDO instance } return self::$queryBuilder->table((new static())->getTable()); } public static function all(): array { return self::query()->get(); } public static function find($id): ?array { return self::query()->where((new static())->getPKField(), '=', $id)->first(); } public static function where(string $column, string $operator = "", mixed $value = ""): QueryBuilder { return self::query()->where($column, $operator, $value); } public static function whereNotIn(string $column, array $values): QueryBuilder { return self::query()->whereNotIn($column, $values); } public static function orWhereIn(string $column, array $values): QueryBuilder { return self::query()->orWhereIn($column, $values); } public static function count(): int { return self::query()->count(); } public static function insert(array $data): bool { return self::query()->insert($data); } public static function updateById($id, array $data): bool { return self::query()->where((new static())->getPKField(), '=', $id)->update($data); } public static function deleteById($id): bool { return self::query()->where((new static())->getPKField(), '=', $id)->delete(); } }