이제 포스트 테이블이 생겼습니다(구조는 변경할 수 없습니다)
tid topic pid
pid reply id
이제 새로운 댓글 중첩 표시 기능이 추가되었습니다. 즉, tid=1
a가 pid 1로 댓글에 댓글을 달았습니다
b가 a의 댓글에 pid 2로 답글을 달았습니다
c가 댓글에 답했습니다 pid가 2 3인 b의 댓글
d는 pid 4
은 1층에
pid1
2층에 pid1, pid2
3층에 pid1, pid2, pid3
4층에 pid1, pid4
로 표시됩니다. 즉, 다른 사람에 대한 모든 답변은 이전의 모든 답변을 인용해야 합니다.
(형식은 NetEase News 댓글과 동일합니다)
현재 생각하고 있는 구조는 post_conversation pid, to_pid
이렇게 하면 2층 답글에 2,1이 삽입됩니다
<code> 3楼回复就插入两条 3,1 3,2 4楼回复就插入 4,1 </code>
99층에서 대화가 발생하면 98개의 데이터를 삽입해야 합니다
<code>这样有个好处就是可以很方便取出任意一个pid的评论情况 select topid from post_conversation where pid = 'xxx' order by pid ; 但是会造成多的重复数据 一个99楼对话得插入1+2+3+。。。+99条 </code>
post_conversation을 이렇게 설계하면
pid, parent_pid(replyed pid)
데이터의 양이 적습니다(답장당 하나의 메시지만 삽입됩니다).
그러나 각 pid에 대해 모든 대화를 쿼리하는 것은 매우 어려운 문제입니다(데이터베이스를 재귀적으로 쿼리하려고 생각 중입니다).
<code>select parent_pid from post_conversation where pid = 'xxx' select parent_pid from post_conversation where pid = 'parent_pid ' ... 一直到parent_pid 为0为止,查询出所有的对话pid </code>
좋은 제안이 있으신가요
이제 포스트 테이블이 생겼습니다(구조는 변경할 수 없습니다)
tid topic pid
pid reply id
이제 새로운 댓글 중첩 표시 기능이 추가되었습니다. 즉, tid=1
a가 pid 1로 댓글에 댓글을 달았습니다
b가 a의 댓글에 pid 2로 답글을 달았습니다
c가 댓글에 답했습니다 pid가 3인 b의 댓글
d가 pid 4
은 1층에
pid1
2층에 pid1, pid2
3층에 pid1, pid2, pid3
4층에 pid1, pid4
로 표시됩니다. 즉, 다른 사람에 대한 모든 답변은 이전의 모든 답변을 인용해야 합니다.
(형식은 NetEase News 댓글과 동일합니다)
현재 생각하고 있는 구조는 post_conversation pid, to_pid
이렇게 하면 2층 답글에 2,1이 삽입됩니다
<code> 3楼回复就插入两条 3,1 3,2 4楼回复就插入 4,1 </code>
99층에서 대화가 발생하면 98개의 데이터를 삽입해야 합니다
<code>这样有个好处就是可以很方便取出任意一个pid的评论情况 select topid from post_conversation where pid = 'xxx' order by pid ; 但是会造成多的重复数据 一个99楼对话得插入1+2+3+。。。+99条 </code>
post_conversation을 이렇게 설계하면
pid, parent_pid(replyed pid)
데이터의 양이 적습니다(답장당 하나의 메시지만 삽입됩니다).
그러나 각 pid에 대해 모든 대화를 쿼리하는 것은 매우 어려운 문제입니다(데이터베이스를 재귀적으로 쿼리하려고 생각 중입니다).
<code>select parent_pid from post_conversation where pid = 'xxx' select parent_pid from post_conversation where pid = 'parent_pid ' ... 一直到parent_pid 为0为止,查询出所有的对话pid </code>
좋은 제안이 있으신가요
초대해주셔서 감사합니다
무한 중첩(메뉴, 댓글)을 달성하기 위해 가장 원시적인 재귀 쿼리 방법을 사용하곤 했습니다. 나중에 Laravel-China 커뮤니티에서 관리자가 게시한 글을 보았는데, 글 주소는 https://laravel-china.org/topics/2124 인데, 预排序遍历树算法(Nested set model)
를 사용하여 무한한 트리형 계층 모델(태그)을 구현한 것입니다. 시스템, 메뉴 시스템, 댓글 시스템 등). 주제는 다음을 참조할 수 있습니다.
'댓글 인용'은 구현 비용이 상대적으로 높으며 중복성이 많습니다. 대신 '댓글에 답글'을 사용하는 것을 고려해 보세요.
하나의 기사는 여러 개의 댓글에 해당하고, 하나의 댓글은 여러 개의 답글에 해당합니다.
Q&A 커뮤니티인 Segmentfault.com과 Tencent News는 모두 "댓글에 대한 답변"을 사용합니다.
Segmentfault를 예로 들어보겠습니다.
질문자(원본 게시자)가 질문을 게시했는데 이 질문에는 여러 답변이 있습니다(플로어 소유자). ). 데이터베이스는 일대다 관계입니다.
각 답변에는 여러 개의 응답이 있을 수 있으며, 이 역시 일대다 관계입니다.
<code>question(id, user_id,content) answer (id,question_id,user_id,content) reply (id,answer_id, user_id,content)</code>