yiisoft / active-record

Active Record database abstraction layer
https://www.yiiframework.com/
BSD 3-Clause "New" or "Revised" License
68 stars 28 forks source link

Make AR constructor empty #364

Closed Tigrov closed 2 months ago

Tigrov commented 3 months ago

This will allow to use model properties in the constructor, for example:

class User extends ActiveRecord
{
    public function __construct(
        protected string|null $name = null,
        protected string|null $email = null,
        protected string $status = 'active',
    ) {
    }

    // The method will be by default in AbstractActiveRecord
    public function db(): ConnectionInterface
    {
        return ConnectionProvider::get('db');
    }

    public function tableName(): string
    {
        return '{{%user}}';
    }
}
ConnectionProvider::set('db', $db);

$user = new User($name, $email, $status);
$user->save();

ConnectionProvider::set('db', $db); can be added to middleware.