gpt4 book ai didi

php - Laravel Eloquent 地选择每组的第一行

转载 作者:行者123 更新时间:2023-12-02 19:29:19 27 4
gpt4 key购买 nike

我在 SQLite 数据库中有主题表和教程表。我正在尝试选择当前教程。这是我的 table

  • 主题表:

    -------------------
    | id | name |
    -------------------
    | 1 | Chemistry |
    | 2 | Physic |
    -------------------
  • 教程表:

    -----------------------------------------
    | id | name | subj_id | completed |
    -----------------------------------------
    | 1 | chapter 1 | 1 | 1 |
    | 2 | chapter 2 | 1 | 0 |
    | 3 | chapter 3 | 1 | 0 |
    | 4 | chapter 1 | 2 | 1 |
    | 5 | chapter 2 | 2 | 1 |
    | 6 | chapter 3 | 2 | 0 |
    | 7 | chapter 4 | 2 | 0 |
    -----------------------------------------

我现在的 Eloquent 是:

  $query->where('completed', false)->groupBy('subj_id')->get();

它返回以下内容:

-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 3 | chapter 3 | 1 | 0 |
| 7 | chapter 4 | 2 | 0 |
-----------------------------------------

现在我想选择 id 2 和 6。

-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 2 | chapter 2 | 1 | 0 |
| 6 | chapter 3 | 2 | 0 |
-----------------------------------------

如何使用 sqlite 获取 id 2 和 6?

最佳答案

@zerofl4g 的帮助解决了我的问题。

这个 Eloquent 得到了@zerofl4g的帮助。

$query->select(DB::raw("SELECT MIN(id), name, subj_id FROM tutorials
WHERE completed = 0 GROUP BY subj_id"));

虽然对我没用,但对我帮助很大。我不知道为什么对我不起作用的确切原因,但我认为我将它用作子查询。所以我得到了重复的选择和错误。它肯定适合那些想要用作单个查询的人。

我的解决方案只是选择带有 DB::raw 的列,并且 ->from('tutorials') 也是可选的,因为它是长查询的子查询

$query->select(DB::raw('MIN(id) as id, name, subj_id'))->from('tutorials')
->where('completed', false)->groupBy('subj_id');

我使用的最终 Eloquent 是

$query->select(DB::raw('MIN(id) as id, name, subj_id'))
->where('completed', false)->groupBy('subj_id');`

希望对您有所帮助。

关于php - Laravel Eloquent 地选择每组的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29730752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com