laravel雄辩的动态自定义计算

时间:2018-08-30 21:13:03

标签: laravel eloquent

我对数据库查询有疑问。目前,我正在执行以下分页操作:

$permissions = Product_permission::groupBy("societe_id")->paginate(15);

Product_permission 具有列 access 的列,该列具有以下值 (web, form, api)

我想在查询中创建一个权重变量,其权重如下 (web = 1, form = 2, api = 3) ,并按 societe_id 对总和组进行排序 desc

你知道吗?

1 个答案:

答案 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'....  

除非您确定此订单始终具有相同的顺序,否则我不建议您...