Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 16:16

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Конфликт связи _has_many с модулем Auth
СообщениеДобавлено: 19 авг 2012, 17:30 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 19 авг 2012, 17:20
Сообщения: 11
Откуда: Домодедово
Добрый день!
Не сталкивался ли кто ни будь с такой проблемой:
Использую модуль Auth, у меня присутствует модель User, соответственно в бд есть таблица users, roles, и roles_users - связь этих таблиц видимо определена где-то в недрах ядра... Я создал модель post, планирую организовать публикацию пользователями материалов на сайте. Соответственно связь - один ко многим (один пользователь может иметь несколько публикаций, каждая публикация может быть опубликована только от одного автора).
Для создания связи в модель User добавляю:
Код:
protected $_has_many = array(
        'posts' => array(
            'model' => 'post',
            'foreign_key' => 'owner_id',
        )
    );

В модель Post:
Код:
protected $_belongs_to = array(
        'owner' => array(
            'model' => 'user',
            'foreign_key' => 'owner_id',
        )
    );

Что с моей точки зрения затирает нативную связь юзеров с ролями, и при обращении к этой связи (при авторизации, регистрации и т.п.) возникает ошибка:
Код:
ErrorException [ Notice ]: Undefined index: roles

Есть идеи, как правильно преодолеть данный конфликт?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 авг 2012, 19:45 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
podpole писал(а):
Использую модуль Auth, у меня присутствует модель User, соответственно в бд есть таблица users, roles, и roles_users - связь этих таблиц видимо определена где-то в недрах ядра...


Код:
  /**
   * A user has many tokens and roles
   *
   * @var array Relationhips
   * @access protected
   */
  protected $_has_many = array(
    'user_tokens' => array('model' => 'user_token'),
    'roles'       => array('model' => 'role', 'through' => 'roles_users'),
  );


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 авг 2012, 20:30 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 19 авг 2012, 17:20
Сообщения: 11
Откуда: Домодедово
Sergey, спасибо.
У меня была такая же идея, но меня смущает следующее:
- Со следующими релизами kohana это может перестать работать, т.к. мы копируем нативные связи в application, и при апдейте в ядре, изменения не будут внесены в нашу модель;
- У меня не создана модель role и user_token, ех тоже вероятно придется дублировать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 авг 2012, 20:43 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
podpole писал(а):
- Со следующими релизами kohana это может перестать работать, т.к. мы копируем нативные связи в application, и при апдейте в ядре, изменения не будут внесены в нашу модель;


Это не так.
Обновления Kohana не имеют никакого отношения к вашим моделям и взаимосвязям описанным в них.
А если и выйдет что-то кардинально иное - вам в любом случае ковырять ваши модели.
Но так или иначе вы не меняете логику приложения, а только модели.

podpole писал(а):
- У меня не создана модель role и user_token, ех тоже вероятно придется дублировать?


Модель Role уже создана до вас, так же как и модель User. Всё таки не забывайте про иерархическую файловую систему Kohana. Но если вам нужно переопределить и/или дополнить любые существующие модели, то да — поместив их по адресу application/classes/model вы добьётесь этого.

Дублировать/создавать модели для связующих таблиц чаще всего не требуется


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 авг 2012, 20:59 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 19 авг 2012, 17:20
Сообщения: 11
Откуда: Домодедово
Sergey, большое спасибо. Внес в проект изменения, всё заработало.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 авг 2012, 21:11 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Велкам :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group