AssegaiPHP 0.9.0 is focused on the data layer.
This release strengthens ORM support across MySQL, MariaDB, PostgreSQL, SQLite, and SQL Server. It improves SQL generation, makes common schema operations more predictable, and gives entity definitions a clearer shape.
For applications that rely on AssegaiPHP ORM, 0.9.0 is designed to make database work feel steadier across local development, testing, and production environments.
Stronger SQL Database Support
The ORM now generates SQL with more awareness of the selected database driver.
That affects the main statement families:
- select
- insert
- update
- delete
- create and drop
- alter
- rename
- describe
- truncate
SQL dialects differ in more than syntax. They also differ in identifier quoting, schema qualification, create/drop behavior, metadata inspection, table changes, and rename operations.
AssegaiPHP 0.9.0 handles more of those differences at the ORM level, so application code can rely on the configured data source instead of working around database-specific behavior by hand.
The practical outcome is simple: generated SQL is more consistent with the database it targets.
SQL Server Support
SQL Server is now a supported ORM target through pdo_sqlsrv.
AssegaiPHP 0.9.0 adds SQL Server support for:
- SQL Server identifier quoting
- SQL Server column rendering
- SQL Server create and drop behavior
- SQL Server describe and rename behavior
- schema-qualified object names
This makes SQL Server a first-class option alongside MySQL, MariaDB, PostgreSQL, and SQLite.
Better SQLite and PostgreSQL Behavior
SQLite support has been improved for local development and testing workflows.
The ORM now pays closer attention to SQLite-specific behavior, including schema changes, insert behavior, upserts, and the tradeoffs of an embedded database.
PostgreSQL also takes a meaningful step forward. The release includes stronger SQL rendering, RETURNING support for inserts, schema-aware table qualification, and better introspection.
Together, these changes make the ORM less MySQL-specific and more useful across the SQL databases AssegaiPHP supports.
Safer Query Execution
This release also tightens several security-sensitive query paths.
Raw query execution now consistently prefers prepared statements instead of switching behavior based on whether parameters are present. PostgreSQL also avoids relying on emulated prepares where native prepares should be the safer expectation.
Applications should still validate input, use parameters, and follow normal database security practices.
The important change is that the ORM now chooses safer defaults for raw query execution.
Clearer Entity Configuration
0.9.0 also makes entity definitions easier to read.
The base Entity attribute should describe the shared persistence intent of a model. SQL-specific storage choices are better expressed separately.
For new code, prefer SqlEntityOptions for SQL-specific settings:
#[Entity(
table: 'audit_logs',
dataSource: 'analytics',
driver: DataSourceType::POSTGRESQL,
)]
#[SqlEntityOptions(schema: 'reporting')]
class AuditLogEntity
{
}
Examples of SQL-specific settings include:
- schema qualification
- engine selection
- SQLite
WITHOUT ROWID
Existing Entity declarations that use database, engine, schema, or withRowId still work in 0.9.0. This is a compatibility transition, not a sudden break.
The benefit is straightforward: general persistence settings and SQL-only storage settings are easier to distinguish.
Generated Primary Keys
Generated primary keys and default relation keys still preserve unsigned semantics where the dialect supports them.
For MySQL and MariaDB, using an unsigned generated bigint for identifiers is sensible. Primary keys do not usually need negative values, and the type should not waste space pretending they do.
For dialects that do not support unsigned integers in the same way, the renderer maps that semantic intent to the closest correct database representation.
That gives applications a portable intent while still respecting each database's type system.
Documentation Updates
The ORM guides have been updated for the 0.9.0 release.
The ORM docs now talk more consistently about:
- data sources instead of only databases
dataSourceon new entity examples- SQL-family driver support, including MSSQL
SqlEntityOptionsfor SQL-only storage concerns- the query builder as a dialect-aware SQL-family API
The examples now match the recommended 0.9.0 style more closely.
Compatibility Notes
AssegaiPHP 0.9.0 is a compatibility-focused step toward a stronger ORM. It does not require a sudden rewrite of existing entities.
Existing entity declarations continue to work, but new examples and documentation use the clearer dataSource and SqlEntityOptions style.
The release focuses on SQL-family databases. Non-SQL backends are not part of this release.
Why This Release Matters
0.9.0 is the kind of release that makes the framework more dependable.
The ORM now treats supported SQL databases more consistently. SQL Server support is available. SQLite and PostgreSQL behavior is stronger. Query execution uses safer defaults. Entity metadata is cleaner. The documentation is more aligned with current practice.
For teams building with AssegaiPHP, 0.9.0 should feel like firmer ground under the data layer.