Я пытаюсь настроить базу данных сообщений. Я разрешаю пользователям отправлять сообщения друг другу через мой сайт. Когда пользователь заходит на свою панель сообщений, я хочу, чтобы база данных возвращала такие данные
1[
Message with sender_id = 1 and sent_to_id = 2 body = text here
Message with sender_id = 2 and sent_to_id = 1 body = text here
Message with sender_id = 1 and sent_to_id = 2 body = text here
]
2[
Message with sender_id = 1 and sent_to_id = 4 body = text here
Message with sender_id = 4 and sent_to_id = 1 body = text here
]
3[
Message with sender_id = 16 and sent_to_id = 1 body = text here
Message with sender_id = 1 and sent_to_id = 16 body = text here
]
Я начал создавать свою базу данных следующим образом
$table->bigIncrements('id');
$table->unsignedBigInteger('sender_id');
$table->unsignedBigInteger('sent_to_id');
$table->text('body');
$table->timestamps();
$table->foreign('sender_id')
->references('id')->on('users')
->onDelete('cascade');
$table->foreign('sent_to_id')
->references('id')->on('users')
->onDelete('cascade');
Тогда в моей модели пользователя у меня есть
public function received()
{
return $this->hasMany(Message::class, 'sent_to_id');
}
public function sent()
{
return $this->hasMany(Message::class, 'sender_id');
}
, который прекрасно работает, но я не вижу способа сгруппировать сообщения в разговоры между пользователями, как в моем первом примере.
Правильно ли я настроил свою базу данных для того, чего я пытаюсь достичь?
Как настроить ее в моей модели для возврата сообщений сгруппированы по разговорам между пользователями?