laravel动态定制计算

laravel动态定制计算,laravel,eloquent,Laravel,Eloquent,我有一个关于数据库查询的问题。目前,我正在进行以下分页: $permissions = Product_permission::groupBy("societe_id")->paginate(15); 产品\u权限有一列访问,其中包含以下值(web、表单、api) 我想在查询中创建一个权重变量,它是一个加权变量,如下所示(web=1,form=2,api=3),并按societe_iddesc对总和组进行排序 你知道怎么做吗?像这样的东西应该能用 $permissions = Produ

我有一个关于数据库查询的问题。目前,我正在进行以下分页:

$permissions = Product_permission::groupBy("societe_id")->paginate(15);
产品\u权限
有一列
访问
,其中包含以下值
(web、表单、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;

}

如果你想让它雄辩。。。您必须添加一个包含大小写的selectRaw,并添加所有可能的排列及其值,如:

CASE WHEN access = 'web,form,api' OR access = 'api,form,web'....  

除非您确定这总是有相同的顺序,否则我不会推荐它…

我认为在设计上有更好的解决方案。。。您可以使用三列。。。或者可以使用hasMany表/关系。。。甚至是存储有效值的表和透视表。。。如果你真的需要这个结构。。。请提供一些示例数据和预期结果。access列包含字符串“web、表单、api”或
id:1 access:web
id:2 access:form
?按access一行,即id:1 access:web和id:2 access:form