Подключение к нескольким БД в yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
shifrosauna1
Сообщения: 19
Зарегистрирован: 2015.04.06, 15:16

Подключение к нескольким БД в yii2

Сообщение shifrosauna1 »

Приветствую. Ситуация следующая:
необходимо подключится к 2 базам. Что сделал:
в config/web.php прописал :

Код: Выделить всё

...
 'db' => require(__DIR__ . '/db.php'),
'db1' => require(__DIR__ . '/db1.php'),
....
добавил /config/db.php

Код: Выделить всё

<?php

return [
      
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2basic',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
    
]; 
?>
добавил /config/db1.php

Код: Выделить всё

<?php

return [
     'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=inventory', 
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
    
];
?>
>
прописал контроллер вью и в моделе /models/Invent.php пишу:

Код: Выделить всё

<?php
namespace app\models;
use yii\db\ActiveRecord;
class Invent extends ActiveRecord
{
 public function getDbConnection(){
       return Yii::app()->db1;
    }
  
}
так вот выполняется почемуто db а не db1..и соответственно не находит нужных таблиц о чем и выводит ошибку.

Подскажите как выполнить ему db1??
Аватара пользователя
Insolita
Сообщения: 788
Зарегистрирован: 2011.06.06, 01:39
Контактная информация:

Re: Подключение к нескольким БД в yii2

Сообщение Insolita »

Код: Выделить всё

public function getDb(){
       return Yii::app()->db1;
    } 
http://stuff.cebe.cc/yii2docs/yii-db-ac ... b()-detail
miha
Сообщения: 15
Зарегистрирован: 2014.05.09, 04:11

Re: Подключение к нескольким БД в yii2

Сообщение miha »

Yii::app()->db1
\Yii::$app->db1
shifrosauna1
Сообщения: 19
Зарегистрирован: 2015.04.06, 15:16

Re: Подключение к нескольким БД в yii2

Сообщение shifrosauna1 »

переделал /models/invent.php

Код: Выделить всё

<?php

namespace app\models;
use Yii;
use yii\db\ActiveRecord;
use yii\db\Connection;

class Invent extends ActiveRecord
{
 public static function getDb(){
       return \Yii::app()->db1;
    } 
 
}

теперь говорит что метод не определен :


PHP Fatal Error – yii\base\ErrorException

Call to undefined method Yii::app()
1. in /var/www/html/basic/models/Invent.php at line 11
234567891011121314

Код: Выделить всё

namespace app\models;
use Yii;
use yii\db\ActiveRecord;
use yii\db\Connection;
 
class Invent extends ActiveRecord
{
 public static function getDb(){
       return \Yii::app()->db1;
    } 
 
}

miha
Сообщения: 15
Зарегистрирован: 2014.05.09, 04:11

Re: Подключение к нескольким БД в yii2

Сообщение miha »

Код: Выделить всё

namespace app\models;
use Yii;
use yii\db\ActiveRecord;
use yii\db\Connection;
 
class Invent extends ActiveRecord
{
 public static function getDb(){
       return \Yii::$app->db1;
    }
 
} 
Найдите одно отличие ;)
shifrosauna1
Сообщения: 19
Зарегистрирован: 2015.04.06, 15:16

Re: Подключение к нескольким БД в yii2

Сообщение shifrosauna1 »

Миха...спасибо огромное за помощь:-)) все работает:-)))
Murphy
Сообщения: 10
Зарегистрирован: 2021.10.01, 08:46

Re: Подключение к нескольким БД в yii2

Сообщение Murphy »

Я нашел, что можно указывать соединение в методе all():
Model::find()->all(Yii::$app->db1);
А как быть с findAll()?
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Подключение к нескольким БД в yii2

Сообщение SiZE »

Murphy писал(а): 2022.03.18, 16:52 Я нашел, что можно указывать соединение в методе all():
Model::find()->all(Yii::$app->db1);
А как быть с findAll()?
https://stackoverflow.com/questions/443 ... 9#44491519
Murphy
Сообщения: 10
Зарегистрирован: 2021.10.01, 08:46

Re: Подключение к нескольким БД в yii2

Сообщение Murphy »

SiZE писал(а): 2022.03.19, 19:35
Murphy писал(а): 2022.03.18, 16:52 Я нашел, что можно указывать соединение в методе all():
Model::find()->all(Yii::$app->db1);
А как быть с findAll()?
https://stackoverflow.com/questions/443 ... 9#44491519
Спасибо. Возьму на заметку.
Ответить