laravel使用集合对重复的表条目进行分组

8iwquhpp  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(422)

好的,我正在尝试获取使用集合的语法。laravel文档和示例现在对我来说毫无意义。没有人真正谈论收藏,所以:
我有两个表条目,一个用于地区,一个用于国家。我想能够做一些像分组国家的地区,所以没有重复的地区打印。在php中,这是有意义的。但在拉威尔,我不知道他们的语法是怎么工作的。
我想得到这样的东西:
a区
a国
b国
c国
a区
a国
b国
等等等等
怎么做到的?
这是我的控制器:

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use DB;
  5. use App\Http\Requests;
  6. class SortController extends Controller
  7. {
  8. public function index(){
  9. $infos = DB::table('list_countries')
  10. ->select('Region', 'Country')
  11. ->groupBy('Region')
  12. ->get();
  13. // $sorts = DB::table('list_countries')->get();
  14. return view('Sort', compact('infos'));
  15. }
  16. }

这是我的旧刀片文件:

  1. @extends('layout')
  2. @section('content')
  3. <h1>Hello</h1>
  4. @extends('layout')
  5. @section('content')
  6. <h1>Hello</h1>
  7. @foreach($infos as $sort)
  8. <div class="checkbox">
  9. <label>
  10. {!! Form::checkbox('agree', 'yes') !!} {{ $sort }}
  11. </label>
  12. </div>
  13. @endforeach
  14. @stop

测试@ray cheng的建议有效:
但它打印了以下内容:
[{“地区”:“非洲-北非”,“国家”:“阿尔及利亚”},{“地区”:“非洲-北非”,“国家”:“埃及”},{“地区”:“非洲-北非”,“国家”:“利比亚”},{“地区”:“非洲-北非”,“国家”:“马里”},{“地区”:“非洲-北非”,“国家”:“毛里塔尼亚”},{“地区”:“非洲-北非”,“国家”:“摩洛哥”},{“地区”:“非洲-北非”,“国家”:“尼日尔”},{“地区”:“非洲-北非”,“国家”:“突尼斯”},{“地区”:“非洲-北非”,“国家”:“西撒哈拉”}]
请注意,这是一个类别,groupby正在工作,但它包含了它分组所依据的对象。
数据库表如下所示:

uidvcgyl

uidvcgyl1#

您需要做的是使用collection函数 groupBy :

  1. $infos = DB::table('list_countries')
  2. ->select('Region', 'Country')
  3. ->get()
  4. ->groupBy('Region')
  5. ->toArray();

相关问题