Skip to content

Yii

Yii Active Record


Latest Stable VersionTotal DownloadsCode CoverageMutation testing badgeStatic analysistype-coveragepsalm-level

This package provides Active Record pattern implementation.

Supported databases:

PackagesBuild status
Microsft SQL ServerBuild status
MySQLBuild status
OracleBuild status
PostgreSQLBuild status
SQLiteBuild status

Requirements

  • PHP 8.1 - 8.5.
Package dependencies installed automatically.
Some features require additional packages.
  • yiisoft/arrays: For \Yiisoft\Arrays\ArrayableInterface support — Yii Array Helper
  • yiisoft/db-sqlite: For SQLite database support — SQLite driver for Yii Database
  • yiisoft/db-mysql: For MySQL database support — MySQL and MariaDB driver for Yii Database
  • yiisoft/db-pgsql: For PostgreSQL database support — PostgreSQL driver for Yii Database
  • yiisoft/db-mssql: For MSSQL database support — Microsoft SQL Server driver for Yii Database
  • yiisoft/db-oracle: For Oracle database support — Oracle driver for Yii Database
  • yiisoft/factory: For factory support — Object factory that is able to resolve dependencies from PSR-11 container
  • yiisoft/event-dispatcher: For events support — PSR-14 event dispatcher

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:

  1. Configure the connection, follow Yii Database guide.
  2. Define the Database Connection for Active Record

General usage

Defined your active record class (for more information, follow Create Active Record Model guide):

finalclass User extends \Yiisoft\ActiveRecord\ActiveRecord
{
publicint$id;
publicstring$username;
publicstring$email;
publicstring$status = 'active';
publicfunctiontableName(): 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]
finalclass User extends \Yiisoft\ActiveRecord\ActiveRecord
{
}

Now you can use the active record:

// Creating a new record$user = newUser();
$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

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.

Support the project

Open Collective

Follow updates

Official websiteTwitterTelegramFacebookSlack

About

Active Record pattern implementation

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

120 stars

Watchers

21 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages