【问题标题】:Laravel - get the data in a certain order…Laravel - 按特定顺序获取数据……
【发布时间】:2020-05-25 06:32:32
【问题描述】:

我有一个关于 Laravel - Eloquent 的问题......

我有一张桌子(除其他外)

  • 身份证
  • 名称(varchar)
  • 位置(整数)
  • parent (int) -> 父页面的id(当它是主菜单的一部分时结果为0)

在我看来,我的目标并不难,但我做错了……。 我需要执行以下操作:

  • 页面在位置 1
    • 孩子 1
    • 孩子 2
  • 页面在位置 2
  • 页面在位置 3
    • 孩子 1
  • 页面在位置 4

示例表:

+----+--------+------+  
| ID |Position|Parent|  
+----+--------+------+  
| 1  |   3    |  0   |
| 2  |   2    |  0   |
| 3  |   3    |  6   |
| 4  |   1    |  6   |
| 5  |   2    |  6   |
| 6  |   1    |  0   |
+----+--------+------+

应该导致:

6
- 4
- 5
- 3
2
1

事实上,在我的第一个 foreach 中,我应该能够做到这一点:

    if $page->children->count() > 0

我尝试了很多不同的东西,以各种可能的方式,但我没有得到我想要的结果...... 如果有人为我提供解决方案,我会很高兴并非常感激:D

提前谢谢你

【问题讨论】:

    标签: laravel eloquent sql-order-by


    【解决方案1】:

    如果我正确理解了这个问题,您可以读取控制器中的表格数据,然后您可以组织视图中的所有数据。在视图中,您可以为要显示的两个级别编写两个嵌套循环。

    控制器:

    $items = $table->all();
    
    return view('page', compact('items'));
    

    查看page.blade.php:

    @foreach($items->where('parent', 0)->sortByDesc('id') as $menuFirstLevel)
        {{$menuFirstLevel->id}}
        @foreach($item->where('parent', $menuFirstLevel->id)->sortBy('foo-bar') as $menuSecondLevel)
            {{$menuSecondLevel->id}}
        @endif
    @endif
    

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 2022-11-29
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 2020-02-16
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多