Какова альтернатива получения нескольких запросов в Laravel?

Я немного запутался в Eloquent и в том, как он работает. я просто хочу знать, что я нахожусь не плохая практика или вид накладных расходов для Eloquent ОРМ.
это часть моего Classroom модель

static function classgradeList(){
return Classroom::select('classgrade')
->groupBy('classgrade')
->orderBy('classgrade')
->get();
}
static function classsectionList(){
return Classroom::select('classgrade','classsection')
->groupBy('classgrade','classsection')
->orderBy('classsection')
->get();
}
static function classnameList(){
return Classroom::select('classgrade','classsection','classname')
->orderBy('classname')
->get();
}

Причина этих функций состоит в том, чтобы создать список для 3 отдельных областей в одном представлении. я тогда называю их как ниже в том же виде:

<ul id="classsections" class="dropdown-menu">
@foreach(App\Classroom::classsectionList() as $csect)
<li onclick="csselect(this)" data-cg="{{$csect->classgrade}}" data-cs="{{$csect->classsection}}" class="classsection">
<a>{{$csect->classsection}}</a>
</li>
@endforeach
</ul>

<ul id="classgrades" class="dropdown-menu">
@foreach(App\Classroom::classgradeList() as $cgrade)
<li onclick="cgselect(this);" data-cg="{{$cgrade->classgrade}}" >
<a>{{$cgrade->classgrade}}</a>
</li>
@endforeach
</ul>

<ul id="classnames" class="dropdown-menu">
@foreach(App\Classroom::classnameList() as $item)
<li onclick="cnselect(this)" data-cg="{{$item->classgrade}}" data-cs="{{$item->classsection}}" data-cn="{{$item->classname}}" class="classname">
<a>{{$item->classname}}</a>
</li>
@endforeach
</ul>

Я думаю, что этот код будет иметь чрезмерные издержки, я хочу реализовать его лучше, как, например, получить все вещи один раз и выполнить запрос в php объем и в конечном итоге через что-то вроде Builder родной класс Laravel.

1

Решение

Благодаря комментарию @ Devon я преодолел проблему с коллекцией, у меня возникла небольшая проблема с функцией groupBy Collection, которая не могла принимать массив столбцов, для этого я создал еще один столбец для коллекции, представляющий собой комбинацию из двух целевых столбцов. как ниже.

$allClass->map(function ($classroom) {
$classroom['sectgrade'] = $classroom['classgrade'].".".$classroom['classsection'];
return $classroom;
});
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector