質問

次の表があります。

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 テーブル。私はコハナの私のモデルでこの関係を表したいです。私は外国の鍵の経験がありますが、それはコハナと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