Vielleicht sollten Sie eine separate ORM-Methode dafür erstellen? 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 (nicht Namen!). PS. Ich erinnere mich nicht, wie man 'WHERE IN' abfragt, also benutze ich DB Ausdrücke.
so funktioniert es für mich, wenn jemand von euch eine bessere Alternative hat, fühlt sich frei, es hier zu posten. – leonardys
Ich glaube, so sollte es gemacht werden. Beachten Sie auch, dass Sie anstelle von 'array_merge()' den Array-Helper verwenden können: '$ results = Arr :: merge ($ staffs, $ managers);'. Mit freundlichen Grüßen. –