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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top