gpt4 book ai didi

php - 每个用户 Laravel 的最新行

转载 作者:行者123 更新时间:2023-11-29 07:01:21 25 4
gpt4 key购买 nike

我有一种“聊天”系统,用户可以与管理员私下聊天,但我有一个问题。在管理面板中,我需要列出我拥有的所有用户与我进行过对话,而那些我尚未回复的人需要颜色为红色。我能够在标准 PHP 中做到这一点,但我不知道如何在 Laravel 中做到这一点。

这是我的数据库:聊天

+----+-----------------------------------------------------------------------------+--------+-------+------+------+------------+------------+
| id | message | sender | admin | file | type | created_at | updated_at |
+----+-----------------------------------------------------------------------------+--------+-------+------+------+------------+------------+
| 1 | Heeey! | 1 | 0 | 0 | 1 | NULL | NULL |
| 2 | Hey. | 1 | 1 | 0 | 1 | NULL | NULL |
| 4 | Zou ik iets mogen vragen? | 1 | 0 | 0 | 1 | NULL | NULL |
| 5 | Ja, tuurlijk. | 1 | 1 | 0 | 1 | NULL | NULL |
| 6 | Zou u een foto voor mij willen vectoriseren? | 1 | 0 | 0 | 1 | NULL | NULL |
| 7 | Het is een vrij grootte | 1 | 0 | 0 | 1 | NULL | NULL |
| 8 | Dat is geen enkel probleem! | 1 | 1 | 0 | 1 | NULL | NULL |
| 9 | Stuur maar door | 1 | 1 | 0 | 1 | NULL | NULL |
| 10 | <a class='.fileReference' href='/uploads/Foobar/24344cat.jpeg'>cat.jpeg</a> | 1 | 0 | 1 | 1 | NULL | NULL |
| 11 | Bedankt! | 1 | 0 | 0 | 1 | NULL | NULL |
| 12 | Geen probleem. | 1 | 1 | 0 | 1 | NULL | NULL |
| 13 | e. | 1 | 0 | 0 | 1 | NULL | NULL |
| 14 | e. | 1 | 1 | 0 | 1 | NULL | NULL |
| 15 | e. | 1 | 0 | 0 | 1 | NULL | NULL |
| 16 | e. | 1 | 1 | 0 | 1 | NULL | NULL |
| 17 | e. | 2 | 0 | 0 | 1 | NULL | NULL |
| 18 | e. | 3 | 0 | 0 | 1 | NULL | NULL |
+----+-----------------------------------------------------------------------------+--------+-------+------+------+------------+------------+

用户

+----+---------+---------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
| id | name | email | password | remember_token | created_at | updated_at |
+----+---------+---------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
| 1 | Foobar | foo@mail.com | $2y$10$xyovyCx32CpbPaiLnKR1o.ls9ydQhupEdMbPyx0Nn2MwOksRAjd0e | NULL | 2017-04-07 16:05:53 | 2017-04-07 16:05:53 |
| 3 | Guxguz | guz@mail.com | $2y$10$fcxZSH9tTFQ8NYRKK46mTuLos3M/vIdzHintrDWhfx5dpteuL4FEG | NULL | 2017-04-07 21:17:04 | 2017-04-07 21:17:04 |
| 4 | Sluxsux | slux@mail.com | $2y$10$l1QdRB7vrkYvwaA4OiMkWeWl5h2l41U4d9yp1uLuWdcp8QuV07APm | NULL | 2017-04-07 21:21:54 | 2017-04-07 21:21:54 |
| 6 | Anbob | an@mail.com | $2y$10$SO/NsCXmBxGjtsBQmvXrMuUyUb8wjmTE532UaImFqXDxeuGI95hCa | NULL | 2017-04-07 21:23:20 | 2017-04-07 21:23:20 |
+----+---------+---------------+--------------------------------------------------------------+----------------+---------------------+---------------------+

我的 Controller :

   $users = DB::table('chat')
->select('sender', 'admin', 'name')
->orderBy('chat.admin', 'asc')
->groupBy('sender')
->join('users', 'chat.sender', '=', 'users.id')
->get();

我得到什么:

[{"sender":"1","admin":"0","name":"Foobar"},{"sender":"3","admin":"0","name":"Guxguz"}]

就像你在 Foobar 上看到的那样,它说 admin=0,但这不正确,但是如果你查看数据库中您会看到 Foobar 的最新一行显示 admin=1。

我基本上需要获取每个用户的最后一行,这样我就可以从那里获取名称和 admin-column 来查看 admin-column 是 0(我不是最后一个)还是 1(我是最后一个)。

我尝试了 ordering、distinct、max-id...但没有成功。

谢谢!

最佳答案

有一些方法可以解决您的问题。 Laravel 中最简单的可能是执行两个查询。

首先获取每个用户的最高聊天ID:

$latestChatIds = DB::table('chat')
->groupBy('sender')
->select(DB::raw('max(id) as id'))
->get()
->pluck('id');

然后在 whereIn() 中使用这些 id 来获取相应的行:

$users = DB::table('chat')
->join('users', 'chat.sender', '=', 'users.id')
->whereIn('chat.id', $latestChatIds)
->select('sender', 'admin', 'name')
->get();

您还可以使用第一个查询作为第二个查询中的子查询:

$latestChatIds = DB::table('chat')
->groupBy('sender')
->select(DB::raw('max(id)'));

$users = DB::table('chat')
->join('users', 'chat.sender', '=', 'users.id')
->whereIn('chat.id', $latestChatIds)
->select('sender', 'admin', 'name')
->get();

关于php - 每个用户 Laravel 的最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43350717/

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