Kohana Работа с двумя базами данных.

Lobezki

Новичок
Доброго времени суток!

Такая задача: Допустим есть главная база 'main', в которой хранятся юзеры и их роли. А рядом лежит еще 3 базы. В каждой базе лежит таблица 'materials'.

Необходимо, например ч.б. после залогинивания юзер с ролью 'moder' имел доступ к базе 'moder_other', с ролью 'admin' имел доступ к базе 'admin_other', а с ролью 'login' имел доступ к базе 'login_other'.

Т.е. ч.б. информация для сессии черпалась из главной базы 'main', а вот дополнительная база для работы подключалась в зависимости от роли.
 

confguru

ExAdmin
Команда форума
В чем вопрос? Заводи в конфиге еще 2 параметра коннекта - т.е. кроме default будут еще 2 базы. Желательно иметь разные пароли на них.
 

Lobezki

Новичок
И потом в моделе просто прописать protected $_db_group = 'name_db' ? И сессия не собьётся?
 

Здыхлик

Kohaner
Команда форума
И потом в моделе просто прописать protected $_db_group = 'name_db' ? И сессия не собьётся?
С чего бы ей сбиваться-то?

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

Lobezki

Новичок
@Здыхлик, я в задаче написал чисто пример. Естественно отдельно под роль никакую базу я не создаю. Просто расписывать сейчас всю логику моего проекта в задаче было бы долго и нудно. Мне надо было понять чисто принцип реализации. И вы мне помогли, за что огромное спасибо!
 

Lobezki

Новичок
И всё-таки не пойму как динамично подставлять значения в $_db_group ?
 

Lobezki

Новичок
Динамично подставляю $_db_group таким способом:

Код:
class Model_Level extends ORM
{

public function __construct()
    {
        $alias = Request::current()->param('alias');
      
        $this->_db_group = $alias;

        parent::__construct();
    }
}
Но тогда получается такой бред, что выборку сделать и создать новую строку могу, но изменить или удалить строку не могу. Не проходит проверку if($settings->loaded())

Код:
$settings = ORM::factory(ucfirst($tab),$key);

                    if($settings->loaded())
                    {
                        $settings->values($values);
                        $settings->update();
                    }
 

AnrDaemon

Продвинутый новичок
А не пробовал в обратном порядке конструктор написать?
 
Сверху