简体   繁体   English

Laravel查询生成器:从每个组中获取一项

[英]Laravel Query Builder: Get one item from each group

Basically I have a mini-library with multiple books, authors and dates of arrival. 基本上,我有一个微型图书馆,里面有多本书,作家和到来日期。

|    Book    |   Author   |   Arrived   | For Sale | 
| ---------- | ---------- | ------------| -------- |
| HPotter V1 | Rowling    | 2010-01-01  | Yes      |
| HPotter V2 | Rowling    | 2010-02-01  | Yes      |
| S.Trek. V1 | Anonymous  | 2010-01-01  | No       |
| LotR. V1   | Tolkien    | 2010-02-01  | Yes      |
| LotR. V2   | Tolkien    | 2010-03-01  | Yes      |
| LotR. V3   | Tolkien    | 2010-04-01  | Yes      |
| LotR. V4   | Tolkien    | 2010-05-01  | Yes      |
| 50Shad. V1 | Satan      | 2010-06-01  | No       |
| Twilight 1 | Satan      | 2010-07-01  | No       |

Basically I need to get only one Book For Sale for Group of Arrived Dates . 基本上,我只需要为到达日期组购买一本书即可出售 That means, I have to get one book for each of these dates: 这意味着,我必须为这些日期中的每个日期获得一本书:

  • 2010-01-01 2010-01-01
  • 2010-02-01 2010-02-01
  • 2010-03-01 2010-03-01
  • 2010-04-01 2010-04-01
  • 2010-05-01 2010-05-01

The last two books are not for sale, so they shouldn't be picked - I know it can be filtered with a simple ->where('For Sale', 'Yes') . 最后两本书非卖品,因此不应该被挑选-我知道可以用一个简单的->where('For Sale', 'Yes')过滤掉。

The main idea is to push everything to the database instead of getting the whole list (it's kinda big) and manipulate it under Laravel. 主要思想是将所有内容推送到数据库,而不是获取整个列表(有点大)并在Laravel下对其进行操作。

Check if this is what you're looking for: 检查这是否是您要查找的内容:

Book::where('For Sale', 'Yes')->groupBy('Arrived')->get();

Hope it helps... 希望能帮助到你...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM