Kohana 3 Auth Modul, bekommen Anwender mit ‚Personal‘ oder ‚Manager‘ Rolle
-
30-09-2019 - |
Frage
Ich lerne den Rahmen, und jetzt eine Anwendung den Aufbau mit ihm.
Ich brauche alle Benutzer zu erhalten, die ‚Nutzer‘ oder ‚Personal‘ Rolle, aber ich konnte nicht darüber auf der Dokumentation.
Hilfe anyone? (Ich glaube, es ist mehr ein ORM Problem das die Auth-Modul)
Lösung
Ich habe nicht einen einfachen Weg finden dies mit der ORM zu tun, aber ich habe eine Abhilfe.
Dies ist mein Code für jeden, der das gleiche Problem mit mir auftreten kann.
// 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);
Andere Tipps
Mai werden Sie eine separate ORM Methode dafür schaffen sollte? So etwas wie dieser Code:
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();
}
$ Rollen ist ein role_id Array (keine Namen!). PS. Ich erinnere mich nicht, wie man die Suche nach 'WHERE IN', so verwende ich DB Ausdrücke.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow