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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Многие ко многим в ORM
СообщениеДобавлено: 18 июл 2013, 01:04 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Подскажите, а где указываются поля для промежуточной таблицы. Т.е. в примере, на сайте, где прописано что genre_id лежат ключевые id к таблице genre и тоже самое с фильмами?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многие ко многим в ORM
СообщениеДобавлено: 18 июл 2013, 10:20 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Понял, нужно добавить 2 дополнительных параметра, например у меня это:

'foreign_key' => 'blog_id',
'far_key' => 'tag_id',


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многие ко многим в ORM
СообщениеДобавлено: 19 июл 2013, 03:22 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
неверно, http://kohanaframework.org/3.3/guide/or ... ny-through

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многие ко многим в ORM
СообщениеДобавлено: 20 июл 2013, 11:43 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Что значит неверно, если так работает... И в классе ORM так используется!

в сумме получается так:

Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Model_Blogslistorm extends ORM {
   
 protected $_table_name  = 'blogs';
 
 protected $_has_many = array(
      'tags'  => array(
               'model'   => 'Tagsorm',
               'foreign_key' => 'blog_id',
               'far_key' => 'tag_id',
               'through' => 'tagsblogs',
          )
    );
   
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многие ко многим в ORM
СообщениеДобавлено: 20 июл 2013, 12:45 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
1. вы пишите код не понимания как он работает,
2. вам указали на пример из оф. документации, там же описаны рекомендации по именованию таблиц и полей бд, если бы вы им следовали, то подобных проблем можно было бы избежать

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многие ко многим в ORM
СообщениеДобавлено: 20 июл 2013, 13:22 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Опять из песни все лошары я супермен...

убираю код в модели:

Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Model_Blogslistorm extends ORM {
   
 protected $_table_name  = 'blogs';
 
 protected $_has_many = array(
      'tags'  => array(
               'model'   => 'Tagsorm',
               'through' => 'tagsblogs',
          )
    );
   
}


В итоге - не работает нефига... Вот тебе и не понимаю...

ошибка:
Database_Exception [ 1054 ]: Unknown column 'tagsblogs.blogslistorm_id' in 'where clause' [ SELECT `tagsorm`.`id` AS `id`, `tagsorm`.`name` AS `name` FROM `tags` AS `tagsorm` JOIN `tagsblogs` ON (`tagsblogs`.`tag_id` = `tagsorm`.`id`) WHERE `tagsblogs`.`blogslistorm_id` = '1' ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многие ко многим в ORM
СообщениеДобавлено: 20 июл 2013, 13:42 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
мне в конечном итоге выгоднее чтобы все были суперменами, поэтому я и трачу тут свое время. вы просто как в старом анекдоте делаете:
-не заводится?
-ага
-а стекло протирать пробовал?
-ага
-а багажник открыть\закрыть?
-ага
-ну тогда не знаю!

причина ошибки описана мной выше, можно и как у вас делать и оно будет работать, но проще просто следовать соглашению по наименованиям в кохане.

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


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

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

Код:
class Model_Post extends ORM {
    /**
     * "Has many" relationships
     * @var array
     */
    protected $_has_many = array(
        'tags' => array(
            'model'       => 'Tag',
            'through'     => 'posts_tags',
            'foreign_key' => 'post_id',
            'far_key'     => 'tag_id'
        ),
    );
}

class Model_Tag extends ORM {
    /**
     * "Has many" relationships
     * @var array
     */
    protected $_has_many = array(
        'posts' => array(
            'model'       => 'Post',
            'through'     => 'posts_tags',
            'foreign_key' => 'tag_id'
        ),
    );
}
 


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многие ко многим в ORM
СообщениеДобавлено: 21 июл 2013, 23:27 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Код:
class Model_Post extends ORM {
    /**
     * "Has many" relationships
     * @var array
     */
    protected $_has_many = array(
        'tags' => array(
            'model'       => 'Tag',
            'through'     => 'posts_tags',
        ),
    );
}

class Model_Tag extends ORM {
    /**
     * "Has many" relationships
     * @var array
     */
    protected $_has_many = array(
        'posts' => array(
            'model'       => 'Post',
            'through'     => 'posts_tags',
        ),
    );
}

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


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

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


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

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


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

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