繁体   English   中英

根据Kohana中另一个表中的数据对mysql结果进行排序

[英]Sort mysql results based on data from another table in Kohana

我继承了Kohana这个项目,对它和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>');

因此,问题将是如何根据是否允许用户登录来更改查询以进行排序。

也许您可以让用户获得登录角色?

$login_users = ORM::factory('role', array('name'=>'login'))->users->find_all();
$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个角色,但使用此查询的用户应该优先

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM