Pregunta

Tengo las siguientes tablas:

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

tabla almacena user_events todos los eventos de usuario (hay muchos de los mismos tipos en diferentes momentos) y tiendas de user_summaries cuántos de cada tipo de acontecimientos se produjo a cada usuario. El primero obtiene sólo consultas INSERT y estas últimas en su mayoría UPDATE.

Por supuesto, tanto user_events y user_summaries tienen claves externas Para enlazar con mesas y users events. Quiero representar esta relación en mis modelos en Kohana. Tengo experiencia con las claves externas, pero es mi primer acercamiento a ambos Kohana y ORM y no estoy seguro de cómo definir realmente mis modelos no representan a estas relaciones.

Lo que yo quiero ser capaz de hacer es básicamente el siguiente:

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

Mis modelos actuales tienen este aspecto:

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

Actualmente llamando a:

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

devuelve siempre el primer usuario de la mesa users, a pesar de que tiene diferentes userevent user_id. Supongo que necesito cambiar algo en Model_userevent pero me gustaría usar con un poco de ayuda.

NB. Estoy usando Kohana 3.0.8.

¿Fue útil?

Solución

Uso $user_event->user (sin find()). Los modelos se ven bien, pero puede ser que debe definir manualmente modelos relacionados para las relaciones usersummaries y userevents (KO3 inflector puede no funciona bien para estos nombres)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top