Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.09.2014 10:40:59

Работа с большим количеством разных БД на удалённых серверах. Как?

Небольшое предисловие — есть множество сайтов-сервисов, практически одинаковых, с единой структурой БД. Всё это дело написано на Yii 1.x, теперь переписываем на Laravel, и будем использовать только Laravel — такие условия. У каждого такого сайта своя админка, через которую происходит редактирование информации. Это терпимо, когда сайтов меньше 10, но эта цифра давно перешагнула 100.

Так вот. Сейчас стоит вопрос о том, как организовать единую админку для всех сайтов. Смысл очень простой — заходим в админку и видим список всех сайтов(мы их предварительно туда добавляем, с указанием сервера MySQL). По клику по любому сайту, нам предлагают ввести логин и пароль от БД(который конечно же не сохраняется). После чего перед нами обычная админка.

Теперь вопрос — как это реализовать в Laravel? Как динамически создавать удалённые подключения из кода и работать с ними? Посоветуйте что-нибудь, пожалуйста.

Не в сети

#2 01.09.2014 21:17:38

stuchin
Откуда: Волгоград
Сообщений: 68

Re: Работа с большим количеством разных БД на удалённых серверах. Как?

тоже интересно

Не в сети

#3 02.09.2014 12:44:48

Re: Работа с большим количеством разных БД на удалённых серверах. Как?

Сам спросил, сам отвечу smile

Всё оказалось довольно просто.

Во первых, создаём новый конфиг:

$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';
	}

Не в сети

#4 12.09.2014 10:35:31

Максим

Re: Работа с большим количеством разных БД на удалённых серверах. Как?

Круто!
Спасибо что написал! Молодец!

Подвал раздела