Php Laravel集合-结果顺序

Php Laravel集合-结果顺序,php,laravel,collections,sql-order-by,Php,Laravel,Collections,Sql Order By,以下 控制器: public function treatmentsList() { $treatments = Treatment::with('category')->where('status', 1)->orderBy('medical_name')->get(); $groups = $treatments->groupBy('category.name'); return view('pages.trea

以下

控制器:

public function treatmentsList()
    {
        $treatments = Treatment::with('category')->where('status', 1)->orderBy('medical_name')->get();
        $groups = $treatments->groupBy('category.name');
        return view('pages.treatments.list', compact( 'groups'));
    }
视图:


如何获得按字母顺序列出的治疗方法和类别?

您可以通过为急切加载查询添加查询约束来获得:

Treatment::with(['category' => function ($query) { 
    $query->orderBy('name');
}])
->where('status', 1)
->orderBy('medical_name')
->get();

我不确定这是不是你的意思。。。但它不起作用。。。我仍然没有按字母顺序列出类别

public function treatmentsList()
{
    $treatments = Treatment::with(['category' => function ($query) {
        $query->orderBy('name');
    }])
        ->where('status', 1)
        ->orderBy('medical_name')
        ->get();
    $groups = $treatments->groupBy('category.name');
    return view('pages.treatments.listA', compact( 'groups'));
}
你是对的,我错了。我认为答案是join查询:

public function treatmentsList()
{
    $treatments = Treatment::with('category')
        ->select('treatment.*')
        ->join('category', 'category.id', '=', 'treatment.category_id')
        ->where('treatment.status', 1)
        ->orderBy('category.name')
        ->orderBy('treatment.medical_name')
        ->get();
    $groups = $treatments->groupBy('category.name');
    return view('pages.treatments.listA', compact( 'groups'));
}

检查上面示例中的表和字段的名称。这应该行得通。

在groupBy函数调用之后,您是否尝试了一个
->orderBy('category.name')
?在groupBy函数调用之后添加
->orderBy('category.name')
:方法orderBy不存在。非常感谢您。。。我刚刚调整了表名,一切正常。
public function treatmentsList()
{
    $treatments = Treatment::with(['category' => function ($query) {
        $query->orderBy('name');
    }])
        ->where('status', 1)
        ->orderBy('medical_name')
        ->get();
    $groups = $treatments->groupBy('category.name');
    return view('pages.treatments.listA', compact( 'groups'));
}
public function treatmentsList()
{
    $treatments = Treatment::with('category')
        ->select('treatment.*')
        ->join('category', 'category.id', '=', 'treatment.category_id')
        ->where('treatment.status', 1)
        ->orderBy('category.name')
        ->orderBy('treatment.medical_name')
        ->get();
    $groups = $treatments->groupBy('category.name');
    return view('pages.treatments.listA', compact( 'groups'));
}