laravel雄辩的自定义计算

问题描述 投票:0回答:1

我对数据库查询有疑问。目前我正在做以下分页:

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

Product_permission有一个列access,其值为(web, form, api)

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

你知不知道怎么?

laravel eloquent
1个回答
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'....  

除非你确定这总是有相同的顺序我不推荐它...

© www.soinside.com 2019 - 2024. All rights reserved.