我正在创建一个多卷注册系统。我正在尝试列出所有现有的卷。这些必须根据它们分配给它们的权限数量进行递增排序。 (在此示例中:用户优先,主持人第二,管理员第三) 我无法在代码中定义卷,因为可以创建新卷并可以删除现有卷。 (代表用户和管理员)
我检索所有可用卷的权限计数,并将它们放在一个带有卷的id的数组中。
数组per_count返回以下ID:
2, 4, 3
的Id:
但是,当我执行以下查询时:
Roll::orderByRaw("FIELD(id, ?)", array($per_count))->get()
它颠倒了订单,我得到了
控制器:
public function index()
{
// Check if user is authorized to use this action, else redirect to login page
$this->authorize_action(__FUNCTION__, $this->classname);
foreach (Roll::all() as $roll) {
$rollpermission['id'] = $roll->id;
$rollpermission['count'] = $roll->permissions->count();
$permission[] = $rollpermission;
}
$this->array_sort_by_column($permission, 'count');
$per_count = array();
foreach ($permission as $per) {
$per_count[] = $per['id'];
}
$foo = implode(', ', array_fill(0, count($per_count), '?'));
return view('roll')
->with('roll', Roll::orderByRaw("FIELD(id, " . $foo . ") desc", array_reverse($per_count))->get());
}
我设法使用array_reverse函数正常工作。 然而,它是草率的,不应该是必要的。我无法找到查询反转结果的原因。 有人可以向我解释为什么结果会逆转吗?感谢