【问题标题】:Laravel Using Collections to group duplicate table entriesLaravel 使用集合对重复的表条目进行分组
【发布时间】:2016-10-07 03:51:17
【问题描述】:

好的,所以我正在尝试获取使用集合的语法。 laravel 文档和示例现在对我来说毫无意义。没有人真正谈论收藏所以:

我有两个表格条目,一个代表地区,一个代表国家。我希望能够按地区对国家进行分组,因此不会打印重复的地区。在 php 中它是有道理的。但是在 laravel 中,我不明白它们的语法是如何工作的。

我想要这样的东西:

A区

  • 国家 A
  • 国家 B
  • C 国

A区

  • 国家 A
  • 国家 B

等等等等

那么它是怎么做的呢?

这是我的控制器:

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;

class SortController extends Controller
{

    public function index(){
        $infos = DB::table('list_countries')
            ->select('Region', 'Country')
            ->groupBy('Region')
            ->get();

       // $sorts = DB::table('list_countries')->get();
        return view('Sort', compact('infos'));
    }
}

这是我的破旧刀片文件:

@extends('layout')


@section('content')
    <h1>Hello</h1>
                @extends('layout')


@section('content')
    <h1>Hello</h1>
                @foreach($infos as $sort)

                    <div class="checkbox">
                        <label>
                            {!! Form::checkbox('agree', 'yes') !!} {{ $sort }}
                        </label>
                    </div>
                @endforeach
@stop

测试@Ray Cheng 的建议是否有效:

但是它会打印这个:

[{"Region":"Africa - North Africa","Country":"Algeria"},{"Region":"Africa - North Africa","Country":"Egypt"},{"Region" :"非洲-北非","Country":"利比亚"},{"Region":"非洲-北非","Country":"马里"},{"Region":"非洲-北非", "国家":"毛里塔尼亚"},{"地区":"非洲-北非","国家":"摩洛哥"},{"地区":"非洲-北非","国家":"尼日尔"} ,{"Region":"非洲-北非","Country":"突尼斯"},{"Region":"非洲-北非","Country":"西撒哈拉"}]

请注意,这是一个类别,groupby 正在工作,但它包括分组依据的对象。

数据库表如下所示:

【问题讨论】:

    标签: php mysql collections laravel-5 group-by


    【解决方案1】:

    你需要做的是使用收集功能groupBy

    $infos = DB::table('list_countries')
            ->select('Region', 'Country')
            ->get()
            ->groupBy('Region')
            ->toArray();
    

    【讨论】:

    • 这确实有效!但是视图的数组并没有使该区域成为唯一的实例,它只是对它进行分组(嗯,这就是它的名称。)但我的印象是 groupBy 将打印一个实例和附加到它的项目。另外,我现在如何调用刀片中的数组元素? {{ $info->Region }} 给我一个错误。
    • @mugluck 你最好把结果附上我,否则我不知道你的结果有什么问题
    • 编辑了主帖以显示您的请求。 @Ray Cheng​​span>
    • @Mugluck,这是一个json数据,你应该在groupBy末尾添加toArray()
    • 这会引发数组错误。如何转换刀片文件? "htmlspecialchars() 期望参数 1 是字符串,给定数组..."
    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2018-05-19
    相关资源
    最近更新 更多