الفكرة كالتالى اخى الكريم سنقوم بعمل جدول خاص بالمواضيع :
CREATE TABLE subjects (
id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(30) NOT NULL,
description VARCHAR(30) NOT NULL,
user_id bigint UNSIGNED,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
ونقوم بعمل جدول يسمى المحادثات ويكون كالتالى :
CREATE TABLE conversations (
id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
subject_id bigint UNSIGNED,
tile VARCHAR(190) NOT NULL,
user_id bigint UNSIGNED,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
بحيث ان تكون المحادثة مربوطة بالموضوع وال user_id هنا يكون اليوزر الذى يريد ان يتحدث مع صاحب الموضوع بحيث اذا اراد اى مستخدم التحدث مع صاحب الموضوع نقوم بعمل محادثة له فى جدول ال conversations ومجرد عنوان ابتدائى للمحادثة
ومن ثم نقوم بعمل جدول نقوم بتخزين الرسائل فية ويكون بالشكل التالى :
CREATE TABLE messages (
id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
conversation_id bigint UNSIGNED,
msg text NOT NULL,
user_id bigint UNSIGNED,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
subjects table :
---------------------
id | title | user_id
---------------------
1 | title | 5
conversations table :
--------------------------------------------------------------
id | subject_id | user_id | title
---------------------------------------------------------------
1 | 1 | 1 | مرحبا لدى عدة اسئله على هذا الموضوع
---------------------------------------------------------------
2 | 1 | 2 | مرحبا اخى الكريم هل لديك وقت كافى
messages table :
-----------------------------------------------------------------
id | conversation_id | user_id | title
-----------------------------------------------------------------
1 | 1 | 1 | كم احتاج وقت حتى اتعلم البرمجة؟
-----------------------------------------------------------------
2 | 1 | 5 | تحتاج خمس شهور
واخيرا اذا اردت ان تسترجع الشات لست يمكن تنفيذ هذه الكويرى :
SELECT conversations.* FROM `conversations`
JOIN subjects on subjects.id = conversations.subject_id
WHERE subjects.user_id = 5
وشكرا .