Question

Je les tableaux suivants:

users           { id, name }
events          { id, name }
user_events     { id, date, user_id, event_id }
user_summaries  { id, user_id, event_id, qty }

Tableau user_events stocke tous les événements utilisateur (il y a beaucoup des mêmes types à différents moments) et les magasins de user_summaries combien de chaque type d'événements est survenue lors de chaque utilisateur. L'ancien ne reçoit que des requêtes INSERT et celle-ci les plus souvent UPDATE.

Bien sûr, les deux user_events et user_summaries ont des clés étrangères établir des liens avec des tables de users et events. Je veux représenter cette relation dans mes modèles dans Kohana. J'ai l'expérience avec les clés étrangères, mais il est ma première approche à la fois Kohana et ORM et je ne suis pas vraiment sûr comment définir mes modèles là pour représenter ces relations.

Ce que je veux être en mesure de le faire est essentiellement ceci:

// 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();

Mes modèles actuels ressemblent à ceci:

# 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(),
    );
}

Actuellement appelant:

$user_event = ORM::factory('userevent', 1);
$user_details = $user_event->user->find();

retourne toujours le premier utilisateur de la table de users, même si userevent a différents user_id. Je suppose que je dois changer quelque chose dans Model_userevent mais j'utiliser avec un peu d'aide.

NB. J'utilise Kohana 3.0.8.

Était-ce utile?

La solution

Utilisez $user_event->user (sans find()). Les modèles ont l'air bien, mais peut-être que vous devez définir manuellement les modèles connexes pour les relations usersummaries et userevents (KO3 inflector peut fonctionne mal pour ces noms)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top