猿问

PHP Laravel如何使用两个表进行排序

我的应用程序中有两个MySQL表Laravel,一个称为categories,另一个称为employees。categories-table的结构为:


id

category

order

该employees表还具有称为:


id

category

order

因此,可以说我categories喜欢:顾问,程序员和行政管理,当我在后端创建员工时,可以将新员工分配到以下类别之一。现在,在我的应用程序的前端,我Laravel希望按类别显示雇员,并按给出的顺序显示类别。假设顾问的顺序为2,程序员的顺序为1,管理的顺序为3。


现在,我的控制器如下所示:


use App\Employee;


class EmployeesController extends Controller

{


    public function index()

    {

       $employees = Employee::all()->groupBy('category');


       return view('app.employee.index', compact('employees'));

    }

}

和我的刀片视图文件:


@foreach ($employees as $category => $workers)

  <div class="col text-center mb-6">

    <h2>{{ $category }}</h2>

  </div>

  <div class="row px-4 px-xl-10">

    @foreach($workers->sortBy('order') as $worker)

      // content of the employee

    @endforeach

 </div>

@endforeach

仅通过使用“雇员”表的类别就可以正确地对雇员进行排序,但是如上所述,我无法按我想要的类别对类别进行排序。


那么,有人可以帮我吗?


编辑


作为示例,我希望输出看起来像这样:


Programmers (since this category has order of 1)

 // employees with category "programmers" here


Consultants (2)

 // employees with category "consultants" here


Administration (3)

 // employees with category "administration" here


墨色风雨
浏览 287回答 2
2回答

蓝山帝景

我认为您必须将查询更改为:$categories = Category::with(['employees'=>function($q){&nbsp; &nbsp;$q->orderBy('order');}])->orderBy('order')->get();
随时随地看视频慕课网APP
我要回答