وحدة Auth Kohana 3 ، الحصول على المستخدمين مع "الموظفين" أو "المدير"
-
30-09-2019 - |
سؤال
أنا أتعلم الإطار ، والآن بناء تطبيق باستخدامه.
أحتاج إلى الحصول على جميع المستخدمين الذين لديهم "مستخدم" أو "موظفين" ، لكنني لم أتمكن من العثور عليه في الوثائق.
مساعدة أي شخص؟ (أعتقد أنها مشكلة 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.
لا تنتمي إلى StackOverflow