Laravel php чат хранение БД?

Чтобы создавать чаты между пользователями сайта (личные, 1 на 1, так сказать) насколько я понимаю для этого нужна отдельная таблица типа chatrooms где хранятся id_1 id_2 пользователей, и еще таблица с сообщениями где вообще все сообщения из всех чатов, chatroom_id, message, sender_id, что-то типа такого..
Можете подсказать, так ли это делается??
  • Вопрос задан
  • 780 просмотров
Решения вопроса 1
aleksejjjj
@aleksejjjj
Я примерно такую структуру вижу:
// Модели
User:
// Список чатов пользователя
public function chats()
{
    return $this->belongsToMany(Chat::class);
}

Chat:
// Сообщения чата
public function messages()
{
    return $this->hasMany(Message::class);
}
// Участники чата
public function users()
{
    return $this->belongsToMany(User::class);
}

Message:
// Автор сообщения
public function user()
{
    return $this->belongsTo(User::class);
}

public function chat()
{
    return $this->belongsTo(Chat::class);
}

// Таблицы
users
 - id
chats
 - id
messages
 - chat_id
 - user_id
 - text
chat_user
 - chat_id
 - user_id

// Соответственно дальше легко работать с Eloquent
// Чаты пользователя
$user->chats;

// Добавление юзера в чат
$chat->users()->attach($user);

// И т.д...
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
chatrooms где хранятся id_1 id_2

зочем? Если кроме 1 на 1 ничего не предвидится, то в одной таблице всё хранить можно, from и to полями.
Ответ написан
anton_reut
@anton_reut
Начинающий веб-разработчик
Ещё можно взять готовый пакет и посмотреть код или доработать под себя в случае необходимости
https://github.com/cmgmyr/laravel-messenger
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы