我对数据库查询有疑问。目前我正在做以下分页:
$permissions = Product_permission::groupBy("societe_id")->paginate(15);
Product_permission
有一个列access
,其值为(web, form, api)
。
我想在查询中创建一个权重变量,其权重如下(web = 1, form = 2, api = 3)
,并按societe_id
desc
对总和组进行排序。
你知不知道怎么?
这样的事情应该有效。
$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'....
除非你确定这总是有相同的顺序我不推荐它...