【发布时间】:2018-09-27 21:37:39
【问题描述】:
我正在 Laravel 5.7 中制作一个私人(一对一)聊天应用程序。 我认为问题出在架构上。如果 user1 已登录并与 user2 建立新对话。这将使用 conversation_id=1 创建。 下次当 user2 登录时,假设他将在 sender 列中找到他的 ID 而他不会在 sender_column 中找到他的 ID,将创建不应创建的新对话,因为要创建新对话,我们必须同时检查发送方和接收方列。
这是我的架构
=======User Table========
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
=============Chat Table=============
Schema::create('chats', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user1_id')->nullable();
$table->foreign('user1_id')->references('id')->on('users');
$table->unsignedInteger('user2_id')->nullable();
$table->foreign('user2_id')->references('id')->on('users');
$table->timestamps();
});
===============Messages Table================
Schema::create('messages', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('chat_id')->nullable();
$table->foreign('chat_id')->references('id')->on('chats');
$table->text('messages');
$table->timestamps();
});
也许你就这样理解了。
Users Chats
id name chat_id user1_id user2_id
1 Mark 1 1 2
2 David 2 2 1
3 Henzard 3 2 3
4 3 2
请给我一个更好的解决方案。
【问题讨论】:
标签: database laravel-5 eloquent chat