У меня есть следующие таблицы:ОРМ отношения в Кохана
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.
Используйте '$ user_event-> user' (без' find() '). Модели выглядят хорошо, но может быть, вы должны вручную определить связанные модели для отношений 'usersummaries' и' userevents' (искатель Ko3 может работать неправильно для этих имен) – biakaveron
Почему я не подумал об этом! Спасибо, биакверон. Положите это как ответ, чтобы я мог его принять. –