2010-11-03 3 views
1

У меня есть следующие таблицы:ОРМ отношения в Кохана

users   { id, name } 
events   { id, name } 
user_events  { id, date, user_id, event_id } 
user_summaries { id, user_id, event_id, qty } 

Таблица user_events хранит все пользовательские события (есть многие из тех же типов в разное время) и user_summaries магазинов, как многие из каждого типа событий, произошедшей в каждый пользователь. Первый получает только INSERT запросов, а последние в основном UPDATE единиц.

Конечно, оба user_events и user_summaries имеют внешние ключи для связи с users и events столами. Я хочу представить это отношение в своих моделях в Кохане. У меня есть опыт работы с внешними ключами, но это мой первый подход как к Kohana, так и к ORM, и я не уверен, как определить мои модели для представления этих отношений.

То, что я хочу быть в состоянии сделать это в основном это:

// I'm able to do this. 
$user = ORM::factory('user', 1); 
$user_events = $user->events->find_all(); 
$user_summaries = $user->usersummaries->find_all(); 

// I'm able to do this, too. 
$event = ORM::factory('event', 1); 
$event_users = $event->users->get_all(); 

// I don't know how to be able to do this: 
$user_event = ORM::factory('userevent', 1); 
$user_details = $user_event->user->find(); 
$event_details = $user_event->event->find(); 

Мои текущие модели выглядеть следующим образом:

# classes/model/user.php 
class Model_User extends ORM 
{ 
    protected $_has_many = array(
     'scores' => array(), 
     'usersummaries' => array(), 
    ); 
} 

# classes/model/event.php 
class Model_Event extends ORM 
{ 
    protected $_has_many = array(
     'scores'  => array(), 
     'usersummaries' => array(), 
    ); 
} 

# classes/model/userevent.php 
class Model_Userevent extends ORM 
{ 
    protected $_belongs_to = array(
     'user' => array(), 
     'event' => array(), 
    ); 
} 

# classes/model/usersummary.php 
class Model_Usersummary extends ORM 
{ 
    protected $_belongs_to = array(
     'user' => array(), 
     'event' => array(), 
    ); 
} 

В настоящее время вызова:

$user_event = ORM::factory('userevent', 1); 
$user_details = $user_event->user->find(); 

возвращается всегда первый пользователь от users стол, хотя userevent имеет разное использование R_ID. Я предполагаю, что мне нужно что-то изменить в Model_userevent, но я бы воспользовался с некоторой помощью.

NB. Я использую Kohana 3.0.8.

+1

Используйте '$ user_event-> user' (без' find() '). Модели выглядят хорошо, но может быть, вы должны вручную определить связанные модели для отношений 'usersummaries' и' userevents' (искатель Ko3 может работать неправильно для этих имен) – biakaveron

+0

Почему я не подумал об этом! Спасибо, биакверон. Положите это как ответ, чтобы я мог его принять. –

ответ

1

Использование $user_event->user (без find()). Модели выглядят хорошо, но может быть, вы должны вручную определить связанные модели для usersummaries и userevents отношений (искатель Ko3 может работать неправильно для этих имен)

+0

Спасибо, бикаверон. –

Смежные вопросы