क्या आपको इसके लिए एक अलग ओआरएम विधि बनाना चाहिए? इस कोड की तरह कुछ:
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();
}
$ भूमिकाओं एक ROLE_ID सरणी है (नहीं के नाम!)। पीएस। मुझे याद नहीं है कि 'WHERE IN' से पूछताछ कैसे करें, इसलिए मैं डीबी अभिव्यक्तियों का उपयोग करता हूं।
यह मेरे लिए काम करता है, अगर आपके पास कोई बेहतर विकल्प है तो इसे यहां पोस्ट करने के लिए स्वतंत्र महसूस होता है। – leonardys
मुझे विश्वास है कि यह वही तरीका है जो इसे किया जाना चाहिए। यह भी ध्यान दें कि 'array_merge()' के बजाय आप ऐरे सहायक का उपयोग कर सकते हैं: '$ results = Arr :: विलय ($ कर्मचारी, $ प्रबंधक);'। सधन्यवाद। –