2016-09-07 1 views
0

Я не уверен на 100%, что модуль - это правильный путь. Думаю, я бы спросил. Моим вариантом использования является то, что у меня довольно большое приложение, которое работает от Oracle.Yii2 Модули и конфигурация

У нас также есть еще одна БД, которая не является оракулом и будет связана с другим типом работы и с другой группой пользователей, поэтому я подумал, что должен использовать модуль. Правильно? Если нет, то лучший способ добиться такого рода настройки?

Если да, есть ли способ сконфигурировать этот второй БД в моем модуле или он должен быть выполнен в основном файле app/config/dp.php?

+0

Вы используете базовое или расширенное ПО? –

+0

@NanaPartykar Basic – Jonnny

+0

Затем создайте еще один ** db1.php ** и включите его в 'config/web.php', как это указано в ** web.php ** ie' 'db1 '=> require (__ DIR__ . '/db1.php'), ' –

ответ

1

Поскольку вы используете Yii2-Basic Application. Итак, структура Directory похожа.

Root Folder 
    -> assets 
    -> commands 
    -> components 
    -> config 
     -> console.php 
     -> db.php 
     -> params.php 
     -> web.php 
    -> controllers 
    -> mail 
    . 
    . 
    . 

Ваши данные подключения к базе данных присутствуют в db.php. Теперь вы хотите, чтобы другая база данных играла важную роль в вашем приложении. Не беспокойся. Создайте еще одну информацию о соединении с базой данных, например, db2.php внутри config папка.

db2.php

<?php 

return [ 
    'class' => 'yii\db\Connection', 
    'dsn' => 'mysql:host=localhost;dbname=another_database_name', 
    'username' => 'username', 
    'password' => 'password', 
    'charset' => 'utf8', 
]; 

Итак, теперь структура каталогов будет:

Root Folder 
    -> assets 
    -> commands 
    -> components 
    -> config 
     -> console.php 
     -> db.php 
     -> db2.php 
     -> params.php 
     -> web.php 
    -> controllers 
    -> mail 
    . 
    . 
    . 

Теперь, следующий шаг, чтобы включить db2.php в приложении.

Открыть web.php. Добавьте еще одну строку для db2.php

<?php 

$params = require(__DIR__ . '/params.php'); 

$config = [ 
    'id' => 'basic', 
    'basePath' => dirname(__DIR__), 
    'components' => [ 
     . 
     . 
     . 
     'db' => require(__DIR__ . '/db.php'), 
     'db2' => require(__DIR__ . '/db2.php'), 
    ], 
]; 

Так, другое соединение с базой данных также установлено успешно. Теперь следующий шаг - использовать запрос, связанный с другим подключением к базе данных.

$row = Yii::$app->db2->createCommand("SELECT * FROM `table_name`")->queryOne(); 
1

В конфигурации/web.php добавить вторую конфигурацию базы данных, создайте файл с именем db2.php и назвать его

'db' => require(__DIR__ . '/db.php'),  
'db2' => require(__DIR__ . '/db2.php'), 

в модели,

class MyModel extends \yii\db\ActiveRecord { 

    // add the function below: 
    public static function getDb() { 
     return Yii::$app->get('db2'); // second database 
    } 
1

Простой путь определяют два другая составляющая одна из каждой БД, например DB1 для оракула и DB2 для MySQL в вас конфиг/web.php

'components' => [ 
    ...... 
    'db1' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'oci:dbname=//localhost:1521/mydatabase', 
     'username' => 'scott', 
     'password' => 'tiger', 
     'charset' => 'utf8', 
    ], 
    'db2' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=localhost;dbname=mydbname', 
     'username' => 'root', 
     'password' => '', 
     'charset' => 'utf8', 
    ], 

и г EFER к Yii :: $ app-> DB1 или Yii :: $ app-> db2, например:

$count1 = Yii::$app->db1->createCommand('SELECT COUNT(*) FROM post') 
     ->queryScalar(); 

или

$count2 = Yii::$app->db2->createCommand('SELECT COUNT(*) FROM post') 
     ->queryScalar(); 
Смежные вопросы