وحدة Auth Kohana 3 ، الحصول على المستخدمين مع "الموظفين" أو "المدير"

StackOverflow https://stackoverflow.com/questions/3552875

سؤال

أنا أتعلم الإطار ، والآن بناء تطبيق باستخدامه.

أحتاج إلى الحصول على جميع المستخدمين الذين لديهم "مستخدم" أو "موظفين" ، لكنني لم أتمكن من العثور عليه في الوثائق.

مساعدة أي شخص؟ (أعتقد أنها مشكلة ORM هي وحدة Auth)

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

المحلول

لم أجد طريقة سهلة للقيام بذلك باستخدام ORM ، لكن لديّ حل.
هذا هو الكود الخاص بي لأي شخص قد يواجه نفس المشكلة معي.

// One for each role
$staffs = ORM::factory('role', array('name' => 'staff'))->users->find_all()->as_array();
$managers = ORM::factory('role', array('name' => 'manager'))->users->find_all()->as_array();

// Merge the results
$results = array_merge($staffs, $managers);

نصائح أخرى

قد تكون يجب عليك إنشاء طريقة ORM منفصلة لذلك؟ شيء مثل هذا الرمز:

public function get_users(array $roles)
{
    $users = DB::select(array($this->_has_many['roles']['foreign_key'], 'id'))
               ->distinct(TRUE)
               ->from($this->_has_many['roles']['through'])
               ->where($this->_has_many['roles']['far_key'], 'IN', DB::expr('('.implode(',', $roles).')'))
               ->execute($this->_db);
    if (count($users) == 0)
    {
        // return empty list
        return array();
    }
    // now we need only IDs from result
    $ids = array();
    foreach($users as $columns)
    {
        $ids[] = $columns['id'];
    }
    // load users by id
    return $this->where($this->_primary_key, 'IN', DB::expr('('.implode(',', $ids).')'))->find_all();
}

أدوار $ هي مجموعة rob_id (وليس الأسماء!). ملاحظة. لا أتذكر كيفية الاستعلام "أين في" ، لذلك أستخدم تعبيرات DB.

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