Динамическое подключение к базе данных Laravel 5.1

Я использую laravel5.1 с mongoDb. В моем приложении у меня есть отдельная база данных для каждого пользователя.

Когда пользователь входит в систему, я устанавливаю базу данных в соответствии с пользовательской БД, используя Config::set('Key' : 'Value').

когда я пытаюсь получить текущее соединение с базой данных, используя Config::get('database), все работает нормально, но когда я пытаюсь получить данные из базы данных, он возвращает данные базы данных по умолчанию.


person Gaurang Ghinaiya    schedule 20.06.2015    source источник
comment
Если вы хотите получать данные из отдельной базы данных, а не из базы данных по умолчанию, напишите такие запросы. $users = DB::connection('myOtherDB')->select(user_id from users); Здесь вы можете передать имя базы данных в соединение, а затем написать любой запрос, который вы хотите выполнить.   -  person rashidkhan    schedule 20.06.2015
comment
Примечание: этот запрос выбора предназначен для MySQL, но вы можете изменить его на любой другой запрос для mongoDB.   -  person rashidkhan    schedule 20.06.2015
comment
@rashidkhan, как я могу сделать это красноречиво?   -  person Gaurang Ghinaiya    schedule 22.06.2015


Ответы (2)


Вы должны переопределить свойство connection в модели следующим образом:

<?php

namespace App\Models;

class Model extends \Illuminate\Database\Eloquent\Model
{
    protected $connection = 'your_connection_name_from_database_config';
}

Вы также можете установить это значение динамически, вызвав $model->setConnection('mongo');

Надеюсь это поможет.

person Armen Markossyan    schedule 23.06.2015
comment
Спасибо за предложение, но уже попробовал это и не работал у меня. - person Gaurang Ghinaiya; 23.06.2015

DB::purge('mongodb-name'); я использовал это после Config::set("Key","value"). И это работа для меня.

person Gaurang Ghinaiya    schedule 23.06.2015