Use ConnectionProvider::get('db') to get connection. This also solves problems with caching AR instances.
Remove factory from base AR class, it is optianal and can be added optionally.
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.
ConnectionProvider::get('db')
to getconnection
. This also solves problems with caching AR instances.This will allow to use model properties in the constructor, for example:
ConnectionProvider::set('db', $db);
can be added to middleware.