Je les tableaux suivants:relations ORM dans Kohana
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 user_summaries
magasins combien de chaque type d'événements se sont produits à chaque utilisateur. Le premier ne reçoit que les requêtes INSERT
et les secondes UPDATE
.
Bien sûr les deux user_events
et user_summaries
ont des clés étrangères à lier avec les tables users
et events
. Je veux représenter cette relation dans mes modèles de Kohana. J'ai de l'expérience avec les clés étrangères, mais c'est ma première approche à la fois de Kohana et d'ORM et je ne suis pas vraiment sûr de la façon de définir mes modèles pour représenter ces relations.
Ce que je veux être en mesure de 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(),
);
}
appeler Actuellement:
$user_event = ORM::factory('userevent', 1);
$user_details = $user_event->user->find();
retourne toujours la premier utilisateur de users
tableau, même si userevent
a une utilisation différente débarrasser. Je présume que j'ai besoin de changer quelque chose en Model_userevent
mais je voudrais utiliser avec de l'aide.
NB. J'utilise Kohana 3.0.8.
Utilisez '$ user_event-> user' (sans' find() '). Les modèles ont l'air bien, mais vous devrez peut-être définir manuellement les modèles associés pour les relations 'usersummaries' et' userevents' (l'inflecteur Ko3 peut ne pas fonctionner correctement pour ces noms) – biakaveron
Pourquoi n'y ai-je pas pensé! Merci, biakveron. Mettez cela comme une réponse pour que je puisse l'accepter. –