Symfony Imageboard发布数据库架构

问题描述

我正在用symfony制作图像板。如果我以最好的方式做到这一点,我会感到好奇。

有一些帖子和帖子,就像在普通论坛中一样。

  • 线程1

    • 帖子1
    • 帖子3
  • 线程2

    • 帖子2
    • 帖子4

问题是我创建了两个实体 Thread Post 。从一个 Thread 获取所有帖子很容易,但是存在一些问题

  • 我无法同时建立线程的>>id链接和发布。该线程在帖子中具有另一个ID编号。我可以创建另一个链接系统,例如>>t>id,但我认为两者的ID编号相同对用户来说更好。
  • sql表模式加倍-每个 post thread 都有标题内容,日期,图像等。
  • 前端的js函数需要另一个参数来了解其 post thread

我认为还会有更多问题。也许我应该只使用 post 而没有 thread ,因为除了 thread_id 之外,其他都是相同的。

Symfony不允许在一个表中建立关系。我可以将其写为一个数字,但是主义将进行多次查询,这会更糟。

我该怎么办?

解决方法

我找到了答案:https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/association-mapping.html#many-to-many-self-referencing

    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     * @OneToMany(targetEntity="Post",mappedBy="parent")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity=Post::class,inversedBy="children",fetch="EAGER")
     * @ORM\JoinColumn(name="parent_id",referencedColumnName="id")
     */
    private $parent;

    /**
     * @ORM\OneToMany(targetEntity=Post::class,mappedBy="parent",fetch="LAZY")
     */
    private $children;