我有以下表格:
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
那些。
当然两者兼而有之
用户事件
和
用户摘要
有要连接的外键
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();
始终返回来自的第一个用户
用户
尽管如此,桌子
userevent
具有不同的用户ID。
我想我需要改变一下
Model_userevent
但我会用一些帮助。
铌。我用的是Kohana 3.0.8。