yiisoft/active-record

Active record pattern implementation

Package info

github.com/yiisoft/active-record

Homepage

Chat

Forum

Wiki

pkg:composer/yiisoft/active-record

Fund package maintenance!

Opencollective

yiisoft

Statistics

Installs: 96 412

Dependents: 27

Suggesters: 4

Stars: 120

Open Issues: 45

1.1.0 2026-05-14 10:53 UTC

Requires

Suggests

Provides

None

Conflicts

None

Replaces

None

BSD-3-Clause 22b7e0fc20b2b045cc99c1ca6b60c87c5cb662a7

Active Recordyii


README

👁 Yii

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:

  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):

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

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 website
👁 Twitter
👁 Telegram
👁 Facebook
👁 Slack