2016-12-16 54 views
1

我正在爲使用Laravel 5.3構建的論壇構建內部郵件系統。基本上,我想要發送消息功能,類似Linkedin- User可以發送電子郵件到另一個User,反之亦然。給定的對話將會有一個線程,這將在兩個用戶之間進行。我一直在瀏覽一些關於StackOverflow的問題,但是在數據庫設計方面還沒有完全找到我的內容。內部郵件系統laravel數據庫設計

這是我的想法是:

messages

  • ID PK
  • SENDER_ID FK到usersuser_id
  • 內容

message_recipients

  • ID PK
  • MESSAGE_ID FK到messagesid
  • recipient_id FK到usersid

但是,我不知道該類型的關係的100%,應該有一個usersmessagesmessage_recipients之間。用戶會有很多消息。消息將屬於用戶。但是,我如何考慮message_recipients表?

隨時提出不同的設計:)

回答

1

您只能創建一個表idsender_idrecipient_idmessage

sender_idrecipient_id是指向users表的外鍵。

它是many to many relationship並且您可以將此表視爲關鍵點,因此您可以定義belongsToMany關係。你也可以爲這個表創建模型,如果你將會使用它很多。

+0

謝謝。我會試試:) – AshMenhennett

+1

@AshMenhennett你已經問過使用關係,它應該是'UserTo'模型中定義的兩個'belongsTo()'關係本身,但是具有不同的外鍵。如果聽起來陌生,創建'Message'模型並在'User'和'Message'之間使用兩個hasMany()'關係,可以更簡單地處理消息和更多可讀代碼。這兩種方式在不同的情況下都很好。 –

+1

感謝您的輸入。我會看看這個。 – AshMenhennett

1

嘗試這種結構:

messages: 

id   - int, autoincrement id 
parent_id - int. To maintain message threads 
sender_id - int. Senders Id 
recipient_id- int. Recievers Id 
content  - text, Message content 
status  - enum('0', '1') for Read, Unread, Deleted etc 

或保持外鍵關係掰成2或3臺。

+0

乾杯!謝謝你的反饋。 – AshMenhennett