Делаю подключение к БД при помощи анонимной функции в components:
Код: Выделить всё
'components' => [
...
,
'userDb' => function () {
if ($user = Yii::$app->get('user', false)) {
$username = Yii::$app->user->identity->username;
} else {
$username = 'GuestDB';
}
Код: Выделить всё
public static function getDb()
{
return Yii::$app->userDb;
}
Это нужно, чтобы сформировать полное имя DB для подключения.
Код: Выделить всё
return Yii::createObject([
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=' . $username,// . $unitID,
'username' => 'root',
'password' => '123',
'charset' => 'utf8',
]);
Код: Выделить всё
public static function getDb()
{
$unitID = 'TestID';
return Yii::$app->userDb($unitID);
}
Если пытаются получить $unitID в самом теле components:Calling unknown method: yii\web\Application::userDb()
Код: Выделить всё
use frontend\models\Unit;
return [
'components' => [
...
,
'userDb' => function () {
if ($user = Yii::$app->get('user', false)) {
$username = Yii::$app->user->identity->username;
$unit = Unit::find()->select('id')->one();
$unitID = $unit['id'];
} else {
$username = 'GuestDB';
$unitID = '0';
}
Подскажите, пожалуйста, как правильно реализовать выборку параметра $unitID?Undefined property: yii\web\Application::$userDb
Спасибо.