我一直在尝试解决这个问题一段时间,但似乎无法让它发挥作用。我有一张看起来与此类似的表。
表:问题
id yearly_issue year stock created_at updated_at magazine_id
1 10 2000 1 [timestamp] [timestamp] 3
2 12 1994 6 [timestamp] [timestamp] 10
3 36 2007 10 [timestamp] [timestamp] 102
4 6 2002 7 [timestamp] [timestamp] 7
5 6 2002 2 [timestamp] [timestamp] 5
6 12 2003 9 [timestamp] [timestamp] 10
7 11 2003 12 [timestamp] [timestamp] 10
我的问题是我需要对其进行排序(简单!)但是,我只想获取每本杂志中的一本(列杂志 ID)。
到目前为止,我的 Eloquent 查询是:
$issues = Issue::where('stock', ($all ? '>=' : '>'), 0)
->orderBy('year', 'desc')
->orderBy('yearly_issue', 'desc')
->take($perpage)
->get();
我认为添加groupBy('magazine_id')
会有所帮助,但似乎它只对我有部分帮助。结果的顺序不正确。那么,我的问题是 - 有没有简单的方法解决这个问题?
我一直在尝试对类似问题的各种答案,但我完全没有实现它。
或者
更多帮助将不胜感激。
编辑:我目前最接近的是:
SELECT i1.*, c.name AS image, m.title AS title
FROM issues i1
INNER JOIN covers c ON i1.id = c.issue_id
INNER JOIN magazines m ON i1.magazine_id = m.id
JOIN (SELECT magazine_id, MAX(year) year, MAX(yearly_issue) yearly_issue FROM issues GROUP BY magazine_id) i2
ON i1.magazine_id = i2.magazine_id
AND i1.year = i2.year
-- AND i1.yearly_issue = i2.yearly_issue
WHERE i1.stock ($all ? '>=' : '>') 0
ORDER BY i1.year DESC, i1.yearly_issue DESC
LIMIT $perpage
但是,它根本没有给我想要的结果。