سؤال

لدي الجداول التالية:

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

الطاولة user_events يخزن جميع أحداث المستخدم (هناك العديد من نفس الأنواع في أوقات مختلفة) و user_summaries يخزن عدد كل نوع من الأحداث التي تحدث لكل مستخدم. السابق يحصل فقط INSERT الاستفسارات والأخير في الغالب UPDATE تلك.

بالطبع كلاهما user_events و user_summaries لديك مفاتيح أجنبية للربط مع users و events الجداول. أريد أن أمثل هذه العلاقة في نماذج بلدي في كوهانا. لديّ خبرة مع المفاتيح الأجنبية ، لكنها نهج لي الأول لكل من Kohana و Orm ولست متأكدًا من كيفية تحديد طرازاتي هناك لتمثيل هذه العلاقات.

ما أريد أن أكون قادرًا على فعله هو هذا بشكل أساسي:

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

نماذج بلدي الحالية تبدو هكذا:

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

الاتصال حاليا:

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

إرجاع دائمًا أول مستخدم من users الجدول ، رغم ذلك userevent لديه user_id مختلف. أفترض أنني بحاجة إلى تغيير شيء ما Model_userevent لكنني سأستخدم بعض المساعدة.

NB. أنا أستخدم Kohana 3.0.8.

هل كانت مفيدة؟

المحلول

يستخدم $user_event->user (بدون find()). تبدو النماذج جيدة ، ولكن قد تكون يجب عليك تحديد النماذج ذات الصلة يدويًا usersummaries و userevents العلاقات (قد يعمل ko3 outsourctor بشكل خاطئ بالنسبة لهذه الأسماء)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top