Ответы пользователя по тегу ORM
  • [ORM] Как соеденить таблицы users и types по has_many?

    dohlik
    @dohlik
    Обратите внимание, что весь функционал модели Model_User на самом деле расположен в Model_Auth_User, а в Model_User только наследование. Скопируйте Model_User в application и там добавляйте нужные связи, методы и тд. Одно НО - если Вы добавляете свойство $_has_many в Model_User, то оно перезатрет родительское. Выходов два:

    1. Скопировать свойства из Model_Auth_User и добавить еще свое. Это особенность Каскадной Файловой Системы Kohana, почитать можно в официальной доке или тут (или еще где-то в интернете, на русском про основы Коханы уже все давно разжевано).
    2. Свойства можно добавлять динамически, посмотрите на метод _initialize(), который вызывается для любой модели ORM. В Вашем случае будет что-то вроде:

    protected function _initialize()
    {
        // сперва пусть отработают родители
        parent::_initialize();
        $this->_has_many['types'] = array('model' => 'Type','through' => 'types_users');
    }
    Ответ написан
    Комментировать
  • Валидация Kohana 3.1 + Стандартный ORM?

    dohlik
    @dohlik
    1. Почему проверка имени через $external_validation? Что мешает просто добавить правило (как в Auth сделано)?
    2. Вообще, лично для меня вторая модель (User_Contacts) не является обязательной. Соответственно вижу два варианта:

    * сохраняем первую модель и просим пользователя отредактировать контакты. Даже если он их не сохранит, они опциональны (ну или будем настойчиво их спрашивать, если все же нужны)
    * сохраняем первую модель + те поля, которые прошли валидацию. Все, что не прошло из-за ошибок, показываем пользователю. Мне такой вариант нравится больше.

    В общем, не паримся с транзакциями, а однозначно зависим только от правильности первой модели (она основная у нас).
    Ответ написан
  • ORM в Kohana 3.1?

    dohlik
    @dohlik
    Метод add() работает только для ManyToMany связей. Для односвязных полей (HasOne, BelongsTo) надо использовать что-то вроде $event->starting_day = $starting_day
    Ответ написан
    9 комментариев