首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel5.5中收集两个按日期分组的模型?

如何在Laravel5.5中收集两个按日期分组的模型?
EN

Stack Overflow用户
提问于 2019-07-17 09:45:06
回答 2查看 417关注 0票数 0

我有两种型号的TourAdventure。我想把旅行团和冒险活动按日期分组。并以如下方式展示:

七月十七日

旅游1旅游2旅游3冒险1冒险2冒险3

七月十六日

旅游1旅游2旅游3冒险1冒险2冒险3

我知道如何使一个单一的模式分组。事情是这样的:

代码语言:javascript
复制
Tour::orderBy('created_at', 'desc')->take(20)->get()->groupBy(function($item)
          {
            return $item->created_at->format('d-M-y');
          });

我如何加入这两种模式,并将它们显示在一个单独的日期?使用当前代码日,在不同的集合中显示。

编辑:包括表迁移。

代码语言:javascript
复制
public function up()
    {
        Schema::create('tours', function (Blueprint $table) {
          $table->increments('id');

          $table->string('name', 125);
          $table->string('slug')->index();
          $table->text('description')->nullable();
          $table->string('duration')->nullable();
          $table->string('url')->nullable();

          $table->boolean('ended')->default(false)->index();

          $table->timestamps();
        });
        DB::statement('ALTER TABLE tours ADD FULLTEXT search(name)');
    }

冒险模型的迁移和旅游是一样的。这两种模式之间没有共同的关系。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-17 11:05:05

我认为您正在寻找合并两个集合Laravel.com/docs/5.8/collections#方法-合并的merge()方法

代码语言:javascript
复制
        //Get all Tours
        $tours= Tour::orderBy('created_at', 'desc')->get();

        //Get all adventures
        $adventures= Adventure::orderBy('created_at', 'desc')->get();

        //Merge both collection into 1 single collection and group according the date
        $dates= $tours->merge($adventures)->groupBy(function($item) {
            return $item->created_at->format('d-M-y');
        });

        return view('someView', compact('dates'));

然后您可以在日期内循环。

代码语言:javascript
复制
        @foreach($dates as $date => $activity)
            <h2>{{$date}}</h2>
            <li>
                {{$activity}}
            </li>
        @endforeach
票数 1
EN

Stack Overflow用户

发布于 2019-07-17 10:14:45

像这样的事情应该能起作用:

代码语言:javascript
复制
Tour::join('adventures', DB::raw('date(adventures.created_at)'), '=', DB::raw('date(tours.created_at)'))->get()

当然,您仍然可以在运行->get()之前进行分组或排序,因为->get()执行了查询并使您的集合:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57072992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档