![](/img/trans.png)
[英]Php, Mysql sort results based on number of records from another table
[英]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.