Table des matières
回复内容:
Maison développement back-end tutoriel php 文章评论嵌套显示mysql表结构如何设计(形式如网易新闻评论)

文章评论嵌套显示mysql表结构如何设计(形式如网易新闻评论)

Dec 01, 2016 am 12:56 AM
mysql php

现在有一张post表 (结构不能改变)
tid 主题pid
pid 回复id

现在新增了评论嵌套显示功能,即tid=1
a评论了一条 pid为1
b回复了a的评论 pid为2
c回复了b的评论 pid为3
d回复了a pid为4

显示为
1楼 pid1
2楼 pid1,pid2
3楼 pid1,pid2,pid3
4楼 pid1,pid4
即每一个对他人的回复都需要引用之前所有的回复。
(形式跟网易新闻的评论一样)
我目前想到一种结构就是post_conversation pid ,to_pid
这样 2楼回复就插入 2,1

<code> 3楼回复就插入两条     3,1
                     3,2
 4楼回复就插入         4,1          </code>
Copier après la connexion
Copier après la connexion

如果有一个99楼的对话 就得插入98条数据

<code>这样有个好处就是可以很方便取出任意一个pid的评论情况
select topid from post_conversation  where pid = 'xxx' order by pid ;
但是会造成多的重复数据  一个99楼对话得插入1+2+3+。。。+99条
</code>
Copier après la connexion
Copier après la connexion

如果这么设计 post_conversation
pid,parent_pid(被回复的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>
Copier après la connexion
Copier après la connexion

请问大家有没有好的建议

回复内容:

现在有一张post表 (结构不能改变)
tid 主题pid
pid 回复id

现在新增了评论嵌套显示功能,即tid=1
a评论了一条 pid为1
b回复了a的评论 pid为2
c回复了b的评论 pid为3
d回复了a pid为4

显示为
1楼 pid1
2楼 pid1,pid2
3楼 pid1,pid2,pid3
4楼 pid1,pid4
即每一个对他人的回复都需要引用之前所有的回复。
(形式跟网易新闻的评论一样)
我目前想到一种结构就是post_conversation pid ,to_pid
这样 2楼回复就插入 2,1

<code> 3楼回复就插入两条     3,1
                     3,2
 4楼回复就插入         4,1          </code>
Copier après la connexion
Copier après la connexion

如果有一个99楼的对话 就得插入98条数据

<code>这样有个好处就是可以很方便取出任意一个pid的评论情况
select topid from post_conversation  where pid = 'xxx' order by pid ;
但是会造成多的重复数据  一个99楼对话得插入1+2+3+。。。+99条
</code>
Copier après la connexion
Copier après la connexion

如果这么设计 post_conversation
pid,parent_pid(被回复的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>
Copier après la connexion
Copier après la connexion

请问大家有没有好的建议

谢邀
曾经我这边也是用最原始那种递归查询的方法来实现(菜单,评论)无限嵌套。后来在 Laravel-China 社区看到管理员发的一篇文章,文章地址https://laravel-china.org/topics/2124,使用 预排序遍历树算法(Nested set model) 实现无限树状层级模型(标签系统,菜单系统,评论系统等)。题主可以参考下。

"引用评论"实现代价比较大,冗余比较多,可以考虑用"回复评论"来替代:
一篇文章对应多条评论,一条评论对应多条回复.
问答社区segmentfault.com和腾讯新闻等用的都是"回复评论".
就拿segmentfault来说:
提问者(楼主)发了一个问题,这个问题有多个回答(层主),在数据库是一对多的关系.
每个回答又可以有多个回复,也是一对多的关系.

<code>question(id,            user_id,content)
answer  (id,question_id,user_id,content)
reply   (id,answer_id,  user_id,content)</code>
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python: comparaison de deux langages de programmation populaires PHP et Python: comparaison de deux langages de programmation populaires Apr 14, 2025 am 12:13 AM

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP: un langage clé pour le développement Web PHP: un langage clé pour le développement Web Apr 13, 2025 am 12:08 AM

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

Statut actuel de PHP: un regard sur les tendances de développement Web Statut actuel de PHP: un regard sur les tendances de développement Web Apr 13, 2025 am 12:20 AM

Le PHP reste important dans le développement Web moderne, en particulier dans la gestion de contenu et les plateformes de commerce électronique. 1) PHP a un écosystème riche et un fort soutien-cadre, tels que Laravel et Symfony. 2) L'optimisation des performances peut être obtenue via Opcache et Nginx. 3) PHP8.0 introduit le compilateur JIT pour améliorer les performances. 4) Les applications natives dans le cloud sont déployées via Docker et Kubernetes pour améliorer la flexibilité et l'évolutivité.

PHP vs autres langues: une comparaison PHP vs autres langues: une comparaison Apr 13, 2025 am 12:19 AM

PHP convient au développement Web, en particulier dans le développement rapide et le traitement du contenu dynamique, mais n'est pas bon dans les applications de la science des données et de l'entreprise. Par rapport à Python, PHP présente plus d'avantages dans le développement Web, mais n'est pas aussi bon que Python dans le domaine de la science des données; Par rapport à Java, PHP fonctionne moins bien dans les applications au niveau de l'entreprise, mais est plus flexible dans le développement Web; Par rapport à JavaScript, PHP est plus concis dans le développement back-end, mais n'est pas aussi bon que JavaScript dans le développement frontal.

Place de MySQL: bases de données et programmation Place de MySQL: bases de données et programmation Apr 13, 2025 am 12:18 AM

La position de MySQL dans les bases de données et la programmation est très importante. Il s'agit d'un système de gestion de base de données relationnel open source qui est largement utilisé dans divers scénarios d'application. 1) MySQL fournit des fonctions efficaces de stockage de données, d'organisation et de récupération, en prenant en charge les systèmes Web, mobiles et de niveau d'entreprise. 2) Il utilise une architecture client-serveur, prend en charge plusieurs moteurs de stockage et optimisation d'index. 3) Les usages de base incluent la création de tables et l'insertion de données, et les usages avancés impliquent des jointures multiples et des requêtes complexes. 4) Des questions fréquemment posées telles que les erreurs de syntaxe SQL et les problèmes de performances peuvent être déboguées via la commande Explication et le journal de requête lente. 5) Les méthodes d'optimisation des performances comprennent l'utilisation rationnelle des indices, la requête optimisée et l'utilisation des caches. Les meilleures pratiques incluent l'utilisation des transactions et des acteurs préparés

La pertinence durable de PHP: est-elle toujours vivante? La pertinence durable de PHP: est-elle toujours vivante? Apr 14, 2025 am 12:12 AM

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

PHP vs Python: fonctionnalités et fonctionnalités de base PHP vs Python: fonctionnalités et fonctionnalités de base Apr 13, 2025 am 12:16 AM

PHP et Python ont chacun leurs propres avantages et conviennent à différents scénarios. 1.PHP convient au développement Web et fournit des serveurs Web intégrés et des bibliothèques de fonctions riches. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et une bibliothèque standard puissante. Lors du choix, il doit être décidé en fonction des exigences du projet.

Objectif de PHP: Construire des sites Web dynamiques Objectif de PHP: Construire des sites Web dynamiques Apr 15, 2025 am 12:18 AM

PHP est utilisé pour créer des sites Web dynamiques, et ses fonctions principales incluent: 1. Générer du contenu dynamique et générer des pages Web en temps réel en se connectant à la base de données; 2. Traiter l'interaction utilisateur et les soumissions de formulaires, vérifier les entrées et répondre aux opérations; 3. Gérer les sessions et l'authentification des utilisateurs pour offrir une expérience personnalisée; 4. Optimiser les performances et suivre les meilleures pratiques pour améliorer l'efficacité et la sécurité du site Web.

See all articles