我的数据库中有一个名为Messages
的表,其结构如下:
id | sender_id | receiver_id | message | sent_at
在这里,id
是primary key
,sender_id
和receiver_id
是foreign keys
,message
是text
和{ {1}}是sent_at
。现在,我有一个名为datetime
的文件,它将使用户能够接收和发送消息。但是,如果我以逐行方式显示所有消息,那么看起来就不好了。因此,我计划创建一个messages.blade.php
,其中一列将是flex
,另一列将是Users
。我打算做的是,每当用户单击某个特定用户时,都需要显示该用户发送或接收的消息。为此,我有以下php代码:
Messages
但是我完全空白处开始介绍这些东西。我要解决的问题是:
答案 0 :(得分:1)
您应该初始化两个新数组($ sent和$ received),它们分别由sender_id和receiver_id索引。然后,您可以遍历$ messagesSentByMe和$ messagesReceivedByMe数组,并将消息添加到这些数组。 例如
$sent = [];
$received = [];
foreach($messagesSentByMe as $message) {
$receiver = $message['receiver_id'];
// Initialize new array containing messages sent to a user
if (!array_key_exists($receiver, $sent)) {
$sent[$receiver] = [];
}
// Add message sent to user to the array
array_push($sent[$receiver], $message);
}
此代码将按发送每条消息的用户将$ messagesSentByMe分组,您可以对$ messagesReceivedByMe进行相同操作。
我不确定100%的意思是您的最终意思,但是我认为您的目的是列出用户与其他人之间的个人对话。您将可以通过使用array_merge和sort函数(可能通过'sent_at'进行排序)来实现这一目标,请参见http://php.net/manual/en/book.array.php
希望我已经为您指明了正确的方向。