0

$_has_manyロールとの関係で、ORM を拡張する Model_User があります。

protected $_has_many = array(
    'roles' => array('model'=>'role','through'=>'users_roles'),
);

すべてのアクティブなユーザーを返す静的関数があります。

public static function get_all_active_users()
{
    return self::factory('user')->where('status', '=', 'active')->find_all();
}

次のSQLに基づいて、特定の役割のユーザーのみを返すように関数を更新したいと思います:

SELECT `users`.* FROM `users`
INNER JOIN `users_roles` ON `users_roles`.`user_id` = `users`.`id`
INNER JOIN `roles` ON `roles`.`id` = `users_roles`.`role_id` AND `roles`.`identifier` = 'admin'
WHERE `users`.`status` = 'active'

get_all_active_users メソッド内で結果をフィルタリングする方法はありますか、それとも新しいメソッドを作成して手動で参加する必要がありますか?

4

2 に答える 2

1

これは私のために働いています:

return self::factory('user')
                ->join('users_roles', 'INNER')->on('users_roles.user_id', '=', 'user.id')
                ->join('roles', 'INNER')->on('roles.id', '=', 'users_roles.role_id')
                ->where(roles.identifier', '=', 'admin')
                ->where('status', '=', 'active')
                ->find_all();

代替案を知りたい。

于 2012-10-18T12:09:29.803 に答える