質問
次の表があります。
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
テーブル。私はコハナの私のモデルでこの関係を表したいです。私は外国の鍵の経験がありますが、それはコハナと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()
)。モデルはうまく見えますが、関連するモデルを手動で定義する必要があります usersummaries
と userevents
関係(KO3編集者はこれらの名前で間違っている可能性があります)
所属していません StackOverflow