I’m making imageboard in symfony. I am curios if I’m doing it in the best way.
There are threads and posts just like in normal forum.
Thread 1
- post 1
 - post 3
 
Thread 2
- post 2
 - post 4
 
The problem is I made two entities Thread and Post. It’s easy to get all posts from one Thread but there are some problems
- I can’t make 
>>idlink for thread and post at the same time. the thread has another id numeration from the post. I can make another link system for example>>t>idbut I think the same id numeration for both is better for the user. - doubled SQL table schema – each post and thread has title, content, date, image, etc.
 - fronted js functions need another parameter to know if its post or thread
 
and I think there will be more problems. Maybe I should use only post without thread because it’s the same except thread_id.
Symfony won’t allow making relation in one table. I can write it as a number but doctrine will be doing multiple queries which is much worse.
What should I do?
Advertisement
Answer
I found the answer: https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/association-mapping.html#many-to-many-self-referencing
    /**
     * @ORMId()
     * @ORMGeneratedValue()
     * @ORMColumn(type="integer")
     * @OneToMany(targetEntity="Post", mappedBy="parent")
     */
    private $id;
    /**
     * @ORMManyToOne(targetEntity=Post::class, inversedBy="children", fetch="EAGER")
     * @ORMJoinColumn(name="parent_id", referencedColumnName="id")
     */
    private $parent;
    /**
     * @ORMOneToMany(targetEntity=Post::class, mappedBy="parent", fetch="LAZY")
     */
    private $children;