ORM Beziehungen in Kohana
-
28-09-2019 - |
Frage
Ich habe die folgenden Tabellen:
users { id, name }
events { id, name }
user_events { id, date, user_id, event_id }
user_summaries { id, user_id, event_id, qty }
Tabelle user_events
speichert alle Benutzerereignisse (es gibt viele der gleichen Arten zu unterschiedlichen Zeiten) und user_summaries
speichert, wie viele von jeder Art von Veranstaltungen für jeden Benutzer aufgetreten. Der ehemalige bekommt nur INSERT
Abfragen und die letzteren meist UPDATE
diejenigen.
Natürlich beide user_events
und user_summaries
Fremdschlüssel haben, um Verbindung mit users
und events
Tabellen.
Ich möchte diese Beziehung in meiner Models in Kohana darzustellen. Ich habe Erfahrung mit Fremdschlüssel, aber es ist mein erster Ansatz sowohl Kohana und ORM und ich bin nicht sicher, ob wirklich, wie meine Modelle dort zu definieren, diese Beziehungen darzustellen.
Was ich tun möchte, der Lage sein, ist im Grunde diese:
// 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();
Meine aktuelle Modelle wie folgt aussehen:
# 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(),
);
}
Zur Zeit Aufruf:
$user_event = ORM::factory('userevent', 1);
$user_details = $user_event->user->find();
gibt immer den ersten Benutzer von users
Tisch, obwohl userevent
verschiedene User_id hat.
Ich nehme an Ich muss etwas ändern in Model_userevent
aber ich würde mit etwas Hilfe gebrauchen.
NB. Ich bin mit Kohana 3.0.8.
Lösung
Mit $user_event->user
(ohne find()
). Modelle sehen gut aus, aber sein können manuell verwandte Modelle für usersummaries
und userevents
Beziehungen (Ko3 Inflector kann für diesen Namen funktioniert falsch) definieren sollte