在一個多使用者系統中,使用者A發布ugc時,一種是全部好友可見, 一種設定某些好友(比如B、C)可見, 某些好友不可見(比如E、F兩人),那麼
A可見的UGC總數是100,列表是全部UGC
B可見的UGC總數是90,列表內容是A的公開ugc和B可見UGC。
E看到的UGC總數是50,列表內容是A的公開ugc和E可見UGC。
看到的列表也是不一樣的。
那麼在php+mysql中,該如何處理相關的邏輯,表設計如何?
回複內容:
在一個多使用者系統中,使用者A發布ugc時,一種是全部好友可見, 一種設定某些好友(比如B、C)可見, 某些好友不可見(比如E、F兩人),那麼
A可見的UGC總數是100,列表是全部UGC
B可見的UGC總數是90,列表內容是A的公開ugc和B可見UGC。
E看到的UGC總數是50,列表內容是A的公開ugc和E可見UGC。
看到的列表也是不一樣的。
那麼在php+mysql中,該如何處理相關的邏輯,表設計如何?
假設表 post 為使用者發布的內容,裡面有個標明類型的欄位 privacy,值為
0 - 'public'(完全公開)1 - 'protected'(指定可見)
建立一張表 noBlock,用來記錄指定可見的 Post 和可見使用者的關係。如:
id postId userId
假設情境為 B 登入,那麼他所看的內容讀取順序即為:
1.讀取所有 privacy 值為 0 的 post 資料。
2.聯集查詢 post 和 noBlock 表,讀取 noBlock 表中 userId 為 Bid 的資料。
大概寫個 mysql 的語句(舉例為主,需要測試):
(select * from post where privacy = 0) union (select * from post left join noBlock on post.id = noBlock.postId where post.privacy = 1 and noBlock.userId = Bid)