drw85135 2016-04-25 18:57
浏览 21
已采纳

Laravel Collections - 结果订单

The following....

Controller:

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

View:

<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>

Gives me...

The treatments grouped in their categories and in alphabetical order but the categories are not in alphabetical order.

- Category B
Treatment A
Treatment B
Treatment C

- Category A
Treatment A
Treatment B

- Category C
Treatment A
Treatment B
Treatment C
Treatment D

How can I get the treatments and categories both listed in alphabetical order?

  • 写回答

1条回答 默认 最新

  • dongtangu8403 2016-04-25 19:13
    关注

    You can get this by adding query constraints for the eager loading query:

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

    Hi,

    I'm not sure if this is what you mean... but it did not worked... I still get the categories not alphabetically listed.

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

    You're right - my mistake. I think that answer is the join query:

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

    Check the names of tables and fields from above example. This should work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算