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

DevConf 2017 - видео с конференции, успей до 17 июля | Проверенные VDS на SSD в Европе и России

Тема в разделе "Kohana", создана пользователем Lobezki, 29 авг 2016.

  1. Lobezki

    Lobezki Новичок

    Сообщения:
    46
    Adress:
    Zaporizhia, Ukraine
    Country:
    Location on Map:
    Доброго времени суток!

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

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

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

    admin Опять хирург :-) Команда форума

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

    Lobezki Новичок

    Сообщения:
    46
    Adress:
    Zaporizhia, Ukraine
    Country:
    Location on Map:
    И потом в моделе просто прописать protected $_db_group = 'name_db' ? И сессия не собьётся?
     
  4. Здыхлик

    Здыхлик Kohaner Команда форума

    Сообщения:
    239
    Adress:
    Moscow, Russia
    Country:
    Location on Map:
    С чего бы ей сбиваться-то?

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

    Lobezki Новичок

    Сообщения:
    46
    Adress:
    Zaporizhia, Ukraine
    Country:
    Location on Map:
    @Здыхлик, я в задаче написал чисто пример. Естественно отдельно под роль никакую базу я не создаю. Просто расписывать сейчас всю логику моего проекта в задаче было бы долго и нудно. Мне надо было понять чисто принцип реализации. И вы мне помогли, за что огромное спасибо!
     
  6. Lobezki

    Lobezki Новичок

    Сообщения:
    46
    Adress:
    Zaporizhia, Ukraine
    Country:
    Location on Map:
    И всё-таки не пойму как динамично подставлять значения в $_db_group ?
     
  7. Lobezki

    Lobezki Новичок

    Сообщения:
    46
    Adress:
    Zaporizhia, Ukraine
    Country:
    Location on Map:
    Динамично подставляю $_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();
                        }
    
     
  8. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    3.867
    Ваш город:
    Moscow, Russia
    Adress:
    Moscow, Russia
    Country:
    Location on Map:
    А не пробовал в обратном порядке конструктор написать?