我对数据库查询有疑问。目前,我正在执行以下分页操作:
$permissions = Product_permission::groupBy("societe_id")->paginate(15);
Product_permission
具有列 access
的列,该列具有以下值 (web, form, api)
。
我想在查询中创建一个权重变量,其权重如下 (web = 1, form = 2, api = 3)
,并按 societe_id
对总和组进行排序 desc
。
你知道吗?
答案 0 :(得分:0)
类似的事情应该起作用。
$permissions = Product_permission::groupBy("societe_id")->paginate(15);
foreach($permission as $permission){
$auxArr = explode(",", $permission->access);
$auxCount = 0;
foreach($auxArr as $access_col_value)
if($access_col_value == 'web'){
$auxCount += 1;
}else if($access_col_value == 'form'){
$auxCount += 2;
}else if($access_col_value == 'api'){
$auxCount += 3;
}
$permission->acces_col_sum = $auxCount;
}
如果您想雄辩地使用它,则必须添加一个内部带有CASE的selectRaw,并添加所有可能的排列及其值,例如:
CASE WHEN access = 'web,form,api' OR access = 'api,form,web'....
除非您确定此订单始终具有相同的顺序,否则我不建议您...