v2.0.0
Breaking. See UPGRADE.md — an installation that already
applied the migration must rewrite one row in the migration table.
- The bundled migration moved to
Rasuvaeff\Yii3AuditLogDb\Migration\M260620000000CreateAuditLogTable
(src/Migration/, PSR-4 autoloaded) from a global class inmigrations/.
Register it withsetSourceNamespaces()instead of avendor/path. Being
autoloadable is what makes it safe to reference in DI at all: with the old
global class, adding any container definition for it made
Yiisoft\Di\Containerfatal at build time in every request, because
new ReflectionClass()ran before the migration runner had required the file. - The documented way to rename the table never worked.
M...::class => ['__construct()' => ['table' => ...]]is ignored:
yiisoft/db-migrationbuilds migrations throughInjector::make(), which
resolves arguments by name or type from the container and does not read
definitions keyed by the migration's class — and a scalarstring $tablehas
no type to resolve. Users following the README silently got the default name. - The table name is now
AuditLogTableName, a typed value object thatInjector
can resolve, built byconfig/di.phpfrom params. One source of truth: the
migration andDbAuditWritercannot disagree any more (in 1.x the writer read
params while the migration used its own default, so configuring params gave a
writer pointing at a table the migration never created). - New
table_prefixparam, prepended totable— a single place to keep
package tables out of the way of an application's own. - Index names are derived from the table name (
idx_<table>_subject, …).
Unchanged for the default table name; in PostgreSQL, where index names are
unique per schema rather than per table, hard-coded names collided between two
installations sharing a schema. AuditLogTableNamevalidates with\z, not$— PCRE's$also matches
before a trailing newline, so"audit_log\n"passed the 1.x identifier check
inDbAuditWriter.