$id]); } /** * Insert a new record * * @param array $data Assocation array of columns and values * @return string Last inserted primary key ID */ public static function create(array $data): string { $table = static::$table; $columns = implode(', ', array_keys($data)); $placeholders = ':' . implode(', :', array_keys($data)); $sql = "INSERT INTO {$table} ({$columns}) VALUES ({$placeholders})"; return Database::insert($sql, $data); } /** * Update an existing record * * @param mixed $id Primary key ID * @param array $data Associative array of changes * @return int Affected rows count */ public static function update($id, array $data): int { $table = static::$table; $primaryKey = static::$primaryKey; $sets = []; foreach (array_keys($data) as $column) { $sets[] = "{$column} = :{$column}"; } $setSql = implode(', ', $sets); $sql = "UPDATE {$table} SET {$setSql} WHERE {$primaryKey} = :_id"; $params = $data; $params['_id'] = $id; return Database::execute($sql, $params); } /** * Delete record by ID */ public static function delete($id): int { $table = static::$table; $primaryKey = static::$primaryKey; $sql = "DELETE FROM {$table} WHERE {$primaryKey} = :id"; return Database::execute($sql, ['id' => $id]); } }