Конкретная база данных коммутатора 5.7 на лету
Я хочу записать результат формы в другую базу данных.
В Concrete 5.6 вы можете переключаться на другую базу данных на лету. Я не могу выяснить, как это работает в бетоне 5.7.
5,6 способ
$db = Loader::db( 'newserver', 'newuser', 'newpassword', 'newdatabase', true);
Можно использовать устаревший загрузчик в бетоне 5.7. Я попытался подключиться к базе данных, но в сообщении об ошибке вы видите, что он все еще пытается использовать базу данных по умолчанию.
$db = Database::get();
//tried this
$db = Loader::db('localhost', 'root', 'root', 'db_new', true);
//error
//db_original.db_new does not exist
1 ответ
Я рекомендую вам установить другое соединение в application/config/database.php. Таким образом, ваш конфиг может выглядеть примерно так:
<?php
return array(
'default-connection' => 'concrete',
'connections' => array(
'concrete' => array(
'driver' => 'c5_pdo_mysql',
'server' => 'localhost',
'database' => 'c5',
'username' => 'uuuuuuuuuuu',
'password' => 'ppppppppppp',
'charset' => 'utf8'
),
'my_new_db' => array(
'driver' => 'c5_pdo_mysql',
'server' => 'localhost',
'database' => 'db_new',
'username' => 'uuuuuuuuuuu',
'password' => 'ppppppppppp',
'charset' => 'utf8'
)
)
);
Затем, когда вы используете свой код, вы можете получить доступ к этому соединению в любое время, выполнив следующие действия:
//get the default connection
$newDb = \Core::make('database')->connection();
//get the new connection
$newDb = \Core::make('database')->connection('my_new_db');
РЕДАКТИРОВАТЬ: Для тех, кто хочет изменить тип драйвера базы данных, вам необходимо отобразить реализацию драйвера в вашей конфигурации, которая может выглядеть примерно так:
<?php
return array(
'default-connection' => 'concrete',
'drivers' => array(
'pdo_sqlsrv' => 'Doctrine\DBAL\Driver\SQLSrv\Driver'
),
'connections' => array(
'concrete' => array(
'driver' => 'c5_pdo_mysql',
'server' => 'localhost',
'database' => 'c5',
'username' => 'uuuuuuuuu',
'password' => 'pppppppppp',
'charset' => 'utf8',
),
'my_new_db' => array(
'driver' => 'pdo_sqlsrv',
'server' => 'mydatabaseserver.mycompany.com',
'database' => 'my_new_db',
'username' => 'uuuuuuuuuuu',
'password' => 'ppppppppppp',
)
),
);