【问题标题】:Laravel Eloquent DistinctLaravel Eloquent Distinct
【发布时间】:2019-02-01 07:39:39
【问题描述】:

我有这张桌子

int id
string title
string year // maybe i'll change this to int??

我想循环我的数据而不使用另一个表来使用 Year 创建关系。

我想要这样的输出

2018 
 - title1
 - title2
 - title3

我知道 select distinct,然后我必须通过我在 select distinct 上收集的数据创建另一个查询。我的问题是这在 eloquent 中是否可行,如何实现? 谢谢。

到目前为止我尝试了什么

$albums = Albums::groupBy('year')->get()->toArray();

以及我正在做的事情

array:2 [▼
  0 => array:5 [▼
    "id" => 4
    "title" => "Title1"
    "year" => "2017"
    "created_at" => "2019-02-01 07:46:30"
    "updated_at" => "2019-02-01 07:46:30"
  ]
  1 => array:5 [▼
    "id" => 1
    "title" => "Title1"
    "year" => "2018"
    "created_at" => "2019-02-01 07:08:59"
    "updated_at" => "2019-02-01 07:08:59"
  ]
]

我桌子上的东西是

title1 2017
title2 2017
title3 2017
title1 2018
title2 2018
title3 2018

编辑 用这个得到它

$albums = Albums::all()->groupBy('year')->toArray();

这样的输出

array:2 [▼
  2018 => array:3 [▼
    0 => array:5 [▶]
    1 => array:5 [▶]
    2 => array:5 [▶]
  ]
  2017 => array:3 [▼
    0 => array:5 [▶]
    1 => array:5 [▶]
    2 => array:5 [▶]
  ]
]

现在要考虑如何显示那些年份。谢谢大家。

【问题讨论】:

  • 到目前为止你尝试过什么?你到底卡在哪里了?
  • 我尝试了 groupby 查询,但我收到语法错误或访问冲突:1055
  • 向我们展示这个尝试!
  • 我只是编辑我的帖子。谢谢

标签: php laravel-5 eloquent


【解决方案1】:

你为什么不使用合并方法? https://laravel.com/docs/5.7/collections#method-merge

$albums = Albums::all(); 
$year = new Collection(); 
foreach ($albums as $item) 
{ $year=$year->merge($item); $year=$year->flatten()->unique('year'); } 

【讨论】:

    猜你喜欢
    • 2020-09-12
    • 2019-12-24
    • 2021-09-29
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2017-04-23
    • 2015-04-23
    • 1970-01-01
    相关资源
    最近更新 更多