Domanda

Ho le seguenti tabelle:

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

Tabella memorizza tutti user_events eventi utente (ci sono molti degli stessi tipi in tempi diversi) e memorizza user_summaries il numero di ogni tipo di eventi verificato per ciascun utente. L'ex ottiene solo le query INSERT e questi ultimi in gran parte UPDATE.

Naturalmente sia user_events e user_summaries hanno chiavi esterne Per creare un collegamento con le tabelle users e events. Voglio rappresentare questa relazione nei miei modelli in Kohana. Ho esperienza con le chiavi esterne, ma è il mio primo approccio sia Kohana e ORM e io non sono sicuro veramente come definire i miei modelli lì per rappresentare queste relazioni.

Quello che voglio essere in grado di fare è fondamentalmente questo:

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

I miei modelli attuali simile a questa:

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

Al momento chiamando:

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

restituisce sempre il primo utente da tavolo users, anche se userevent ha id_utente diverso. Presumo che ho bisogno di cambiare qualcosa nella Model_userevent ma mi piacerebbe utilizzare con qualche aiuto.

NB. Sto utilizzando Kohana 3.0.8.

È stato utile?

Soluzione

Usa $user_event->user (senza find()). I modelli vanno bene, ma può essere è necessario definire manualmente modelli correlati per usersummaries e userevents relazioni (KO3 inflettore può funziona male per questi nomi)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top