красноречивые пользовательские вычисления на лету - PullRequest
0 голосов
/ 31 августа 2018

У меня вопрос по запросу БД. В настоящее время я занимаюсь следующим пагинатом:

$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 голосов
/ 31 августа 2018

Как-то так должно работать.

$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;

}

Если вы хотите использовать eloquent ... вам нужно добавить selectRaw с CASE внутри и добавить каждую возможную перестановку и ее значение, например:

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

Если вы не уверены, что это всегда один и тот же порядок, я бы его не рекомендовал ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...