Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Небольшое предисловие — есть множество сайтов-сервисов, практически одинаковых, с единой структурой БД. Всё это дело написано на Yii 1.x, теперь переписываем на Laravel, и будем использовать только Laravel — такие условия. У каждого такого сайта своя админка, через которую происходит редактирование информации. Это терпимо, когда сайтов меньше 10, но эта цифра давно перешагнула 100.
Так вот. Сейчас стоит вопрос о том, как организовать единую админку для всех сайтов. Смысл очень простой — заходим в админку и видим список всех сайтов(мы их предварительно туда добавляем, с указанием сервера MySQL). По клику по любому сайту, нам предлагают ввести логин и пароль от БД(который конечно же не сохраняется). После чего перед нами обычная админка.
Теперь вопрос — как это реализовать в Laravel? Как динамически создавать удалённые подключения из кода и работать с ними? Посоветуйте что-нибудь, пожалуйста.
Не в сети
тоже интересно
Не в сети
Сам спросил, сам отвечу
Всё оказалось довольно просто.
Во первых, создаём новый конфиг:
$conn = array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DATABASE',
'username' => 'USERNAME',
'password' => 'SOME_PASSWORD',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
);
Config::set('database.connections.DB_CONFIG_NAME', $conn);
Затем можем работать с удалённой базой данных:
MODEL::on('DB_CONFIG_NAME')->find(1);
// чтобы не указывать постоянно on('DB_CONFIG_NAME')
// мы можем указать через какой конфиг подключаемся
// в самой модели
class Page extends Eloquent
{
// через переменную $connection
protected $connection = 'DB_CONFIG_NAME';
// либо в конструкторе
function __construct()
{
$this->connection = 'DB_CONFIG_NAME';
}
Не в сети
Круто!
Спасибо что написал! Молодец!