我对Eloquent及其运作方式实际上有点困惑。我只想知道即时通讯的方式对于Eloquent
ORM来说不是一种糟糕的做法或开销。
这是我的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& #39;本地课程。
答案 0 :(得分:1)
感谢@Devon的评论我已经克服了该集合的问题,我对Collection的groupBy函数有一些问题,它无法获取列数组,因为我为集合创建了另一个列,它是组合的两个目标栏如下。
$allClass->map(function ($classroom) {
$classroom['sectgrade'] = $classroom['classgrade'].".".$classroom['classsection'];
return $classroom;
});