yiisoft/active-record
Active record pattern implementation
Requires
- php: 8.1 - 8.5
- yiisoft/db: ^2.0
Requires (Dev)
- ext-pdo: *
- bamarni/composer-bin-plugin: ^1.8.3
- friendsofphp/php-cs-fixer: ^3.89.1
- maglnet/composer-require-checker: ^4.7.1
- phpunit/phpunit: ^10.5.58
- rector/rector: ^2.2.3
- spatie/phpunit-watcher: ^1.24
- yiisoft/arrays: ^3.2
- yiisoft/db-mssql: ^2.0
- yiisoft/db-mysql: ^2.0
- yiisoft/db-oracle: ^2.0
- yiisoft/db-pgsql: ^2.0
- yiisoft/db-sqlite: ^2.0
- yiisoft/di: ^1.4
- yiisoft/event-dispatcher: ^1.1
- yiisoft/factory: ^1.3
- yiisoft/psr-dummy-provider: ^1.0
- yiisoft/test-support: ^3.0.2
- yiisoft/yii-runner: ^2.2
Suggests
- yiisoft/arrays: For \Yiisoft\Arrays\ArrayableInterface support
- yiisoft/db-mssql: For MSSQL database support
- yiisoft/db-mysql: For MySQL database support
- yiisoft/db-oracle: For Oracle database support
- yiisoft/db-pgsql: For PostgreSQL database support
- yiisoft/db-sqlite: For SQLite database support
- yiisoft/event-dispatcher: For events support
- yiisoft/factory: For factory support
Provides
None
Conflicts
None
Replaces
None
BSD-3-Clause 22b7e0fc20b2b045cc99c1ca6b60c87c5cb662a7
This package is auto-updated.
Last update: 2026-06-24 21:45:54 UTC
README
Yii Active Record
👁 Latest Stable Version
👁 Total Downloads
👁 Code Coverage
👁 Mutation testing badge
👁 Static analysis
👁 type-coverage
👁 psalm-level
This package provides Active Record pattern implementation.
Supported databases:
| Packages | Build status |
|---|---|
| Microsft SQL Server | 👁 Build status |
| MySQL | 👁 Build status |
| Oracle | 👁 Build status |
| PostgreSQL | 👁 Build status |
| SQLite | 👁 Build status |
Requirements
- PHP 8.1 - 8.5.
Installation
The package could be installed with Composer:
composer require yiisoft/active-record
Important
See also installation notes for yiisoft/db
package.
After installing yiisoft/active-record, you also need to configure a database connection:
- Configure the connection, follow Yii Database guide.
- Define the Database Connection for Active Record
General usage
Defined your active record class (for more information, follow Create Active Record Model guide):
final class User extends \Yiisoft\ActiveRecord\ActiveRecord { public int $id; public string $username; public string $email; public string $status = 'active'; public function tableName(): string { return '{{%user}}'; } }
For fast prototyping you can use dynamic properties by adding #[\AllowDynamicProperties] attribute:
/** * Database fields: * @property int $id * @property string $username * @property string $email * @property string $status **/ #[\AllowDynamicProperties] final class User extends \Yiisoft\ActiveRecord\ActiveRecord { }
Now you can use the active record:
// Creating a new record $user = new User(); $user->username = 'alexander-pushkin'; $user->email = 'pushkin@example.com'; $user->save(); // Retrieving a record $user = User::query()->findByPk(1); // Read properties $username = $user->username; $email = $user->email;
Documentation
- Define the Database Connection for Active Record
- Create Active Record Model
- Define Active Record Relations
- Extending Functionality With Traits
- Using Dependency Injection With Active Record Model
- Optimistic Locking
- Internals
If you need help or have a question, the Yii Forum is a good place for that. You may also check out other Yii Community Resources.
License
The Yii Active Record is free software. It is released under the terms of the BSD License.
Please see LICENSE for more information.
Maintained by Yii Software.
