Вы увидите этот рисунок со многими фасадами ларавеллы. Если вы обрабатываете «один из чего-то», в данном случае столбец, вы передаете строку, а если вы обрабатываете много чего-то, вы передаете массив.
Именно поэтому *
и level
оба действительны. Потому что *
распознается как столбец и расширяется внутри mysql для соответствия каждому столбцу.
И именно поэтому он не работает, когда вы пытаетесь запросить 'level, column2, column3', потому что эта строка не является допустимым именем столбца, поэтому вам нужно передать массив со всеми столбцами, которые вы хотите использовать .
$fodas = Foda::groupBy('level')
->select(['level','other','column'], DB::raw('count (*) as total'))
->get();
Как я уже говорил, это относится ко многим фасадам ларавеллы:
Facade::function('one_thing');
//or
Facade::function(['thing1','thing2','thing3']);
//or even this, for some cases
Facade::function('thing1','thing2','thing3');