【问题标题】:Laravel 5.4 Nested Loop with Grouped dataset带有分组数据集的 Laravel 5.4 嵌套循环
【发布时间】:2017-10-12 23:02:11
【问题描述】:

“过滤器”表如下所示:

id |  group   |       label       |        value        
----+----------+-------------------+----------------

 12 | deadline | 1 to 3 days       | 1 AND 3            
 14 | price    | Any               | 0                  
 15 | price    | Less than 1000    | 0 AND 1000         
 16 | price    | 1000 to 10000     | 1000 AND 10000     
 22 | location | Any               | 0                  
 23 | location | New York          | newyork            
 24 | location | California        | california         
 25 | location | Alabama           | alabama 

我需要在“组”下显示一大块“标签”。

我的控制器:

public function index(){
        $filters = Filters::all();
        return view('frontend.request', compact('filters'));
    }

我的观点是:

<?php foreach ($filters as $filter) { ?>
                    <div class="panel panel-default">
                        <b>{{ $filter->group }}</b>
                        <div id="collapseOne1" class="panel-collapse collapse in">
                            <div class="panel-body">
                                <div class="checkbox">
                                    <label><input type="checkbox" name="{{ $filter->group }}" value="{{ $filter->any }}">{{ $filter->label }}</label>
                                </div>
                            </div>
                        </div>
                    </div>
                <?php } ?>

我想在一个框中显示该组下的所有标签,依此类推。上面的代码为每个不正确的标签创建了不同的框。

我相信,它必须是嵌套循环,但我很难在 Laravel 上编写它。知道应该怎么做吗?

注意:这个帖子给出了部分答案,但在我的情况下我们不知道块大小:Laravel 5.1 - Nested Loop - Blade Templating

【问题讨论】:

    标签: php laravel loops nested


    【解决方案1】:

    你可以使用 Laravel 的 groupBy() 收集方法;

    https://laravel.com/docs/5.4/collections#method-groupby

    控制器:

    public function index(){
        $filters = Filters::all();
        $groups = $filters->groupBy('group');
        return view('frontend.request', compact('groups'));
    }
    

    查看:

    @foreach ($groups as $group => $filters)
        <div class="panel panel-default">
            <b>{{ $group }}</b>
            @foreach($filters as $filter)
                <div id="collapseOne1" class="panel-collapse collapse in">
                    <div class="panel-body">
                        <div class="checkbox">
                            <label><input type="checkbox" name="{{ $filter->group }}" value="{{ $filter->any }}">{{ $filter->label }}</label>
                        </div>
                    </div>
                </div>
            @endforeach
        </div>
    @endforech
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多