Symfony / Doctrine关系良好实践

时间:2019-06-18 07:36:18

标签: symfony doctrine symfony4

我有实体UserLocation-像shop之类的东西,我需要在它们之间添加关系,但是我不知道这样做有什么好习惯,因为:

用户可以有3种类型:经理,主管或员工,以及:

  • 每个位置都有一个用户作为管理员,一个管理员有一个位置;

  • 每个位置都有一个用户作为主管,一个主管有多个位置;

  • 每个位置都有许多用户作为员工,一个员工有一个位置;

首先想到的是向用户添加关系:

     /**
     * @ORM\OneToMany(targetEntity="App\Entity\Location", mappedBy="supervisor")
     */
    private $locations;

    /**
     * @ORM\OneToOne(targetEntity="App\Entity\Location", mappedBy="manager")
     */
    private $location;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Location", inversedBy="employees")
     */
    private $wrokLocation;

和位置:

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="locations")
     */
    private $supervisor;

    /**
     * @ORM\OneToOne(targetEntity="App\Entity\User", inversedBy="location")
     */
    private $manager;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="wrokLocation")
     */
    private $employees;

但是我不知道这是最好的方法。

1 个答案:

答案 0 :(得分:1)

Personnaly,我会做一个抽象类User,然后是3个扩展User类的Supervisor / Manager / Employee。与位置的关系将在每个类中,而不是在用户类中。

然后在“位置”中可以放置这些类。