我有以下表:

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_eventsuser_summaries 有外国钥匙可以与 usersevents 表。我想在我在Kohana的模型中代表这种关系。我有外国钥匙的经验,但这是我对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 具有不同的user_id。我想我需要改变一些东西 Model_userevent 但是我会在一些帮助下使用。

NB。我正在使用Kohana 3.0.8。

有帮助吗?

解决方案

采用 $user_event->user (没有 find())。模型看起来不错,但您可能应该手动定义相关模型 usersummariesuserevents 关系(KO3燃烧器可能对这些名称犯错)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top