2016-04-25 151 views
1

下....Laravel集合 - 结果订购

控制器:

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')); 
    } 

查看:

<ul> 
    @foreach($groups as $category_name => $treatments) 
     <li> 
      <h4>{{ $category_name }}</h4> 
      <ul> 
       @foreach($treatments as $treatment) 
        <li> 
         <h5>{{ $treatment->medical_name }}</h5> 
        </li> 
       @endforeach 
      </ul> 
     </li> 
    @endforeach 
</ul> 

给我...

的治疗方法中的分组类别和按字母顺序,但类别不按字母顺序。

- Category B 
Treatment A 
Treatment B 
Treatment C 

- Category A 
Treatment A 
Treatment B 

- Category C 
Treatment A 
Treatment B 
Treatment C 
Treatment D 

我怎样才能得到按字母顺序排列的治疗和类别?

+0

您是否在groupBy函数调用后尝试过使用' - > orderBy('category.name')'? –

+0

在groupBy给我之后添加' - > orderBy('category.name')':方法orderBy不存在。 – TickedTask

回答

1

您可以通过添加查询约束条件预先加载查询得到这样的:

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')); 
} 

你说得对 - 我的错。我认为答案是加入查询:

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')); 
} 

检查上面例子中的表和字段的名称。这应该工作。

+0

非常感谢你......我只是调整了表名,一切正常。 – TickedTask