0

私はこのコハナプロジェクトを継承しましたが、それとORMの経験はほとんどありません。

テーブル構造は次のようになります。

ROLES TABLE
id
name
ROLES_USERS TABLE
role_id
user_id
USERS TABLE
id
email
password
last_login

問題は、ユーザーが特定の役割(この場合はログイン)を持っているかどうかでソートする必要がありますが、ORMでそれを行う方法がわかりません。
現在のクエリは次のとおりです。

$users = ORM::factory('user')
    ->limit($pagination->items_per_page)
    ->offset($pagination->offset)
    ->order_by('last_login', 'DESC')
    ->find_all();

そして、出力すると次のように出力されます。

$row['status'][] = ($user->has('roles', ORM::factory('role', array('name' => 'login')))
    ? '<span class="green">Active</span>'
    : '<span class="red">Blocked</span>');

したがって、問題は、ユーザーがログインを許可されているかどうかでソートできるようにクエリを変更する方法です。

4

2 に答える 2

0
$users = ORM::factory('user')
    ->join('roles_users', 'LEFT')
        ->on('roles_users.user_id', '=', 'user.id')
    ->join('roles', 'LEFT')
        ->on('roles_users.role_id', '=', DB::expr("roles.id AND roles.name = 'login'"))
    ->group_by('user.id')
    ->order_by('IFNULL("roles.id", \'2000\')', 'ASC')
    ->find_all()

2000 のロールを持っていないことを願っていますが、このクエリを使用してアクティブなユーザーが最初に来る必要があります

于 2011-10-13T20:14:00.917 に答える
0

ログインロールのユーザーを取得できますか?

$login_users = ORM::factory('role', array('name'=>'login'))->users->find_all();
于 2011-10-12T13:48:56.443 に答える