Хорошая практика отношений Symfony / Doctrine - PullRequest
0 голосов
/ 18 июня 2019

У меня есть сущность User и Location - что-то вроде магазина, и мне нужно добавить отношения между ними, но я не знаю, что является хорошей практикой для этого, потому что:

Пользователь может иметь 3типы: Manager, Supervisor или сотрудник, и:

  • В каждом местоположении один пользователь имеет статус менеджера, один менеджер имеет одно местоположение;

  • Every Locationодин руководитель имеет одного пользователя, один руководитель имеет много расположений;

  • В каждом местоположении имеется много пользователей в качестве сотрудников, один сотрудник имеет одно местоположение;

Первая мысль состоит в том, чтобы добавить отношения к пользователю:

     /**
     * @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 Ответ

1 голос
/ 18 июня 2019

Personnaly Я бы сделал абстрактный класс User, затем 3 класса Supervisor / Manager / Employee, который расширяет класс User.Отношения к Location будут в каждом классе вместо класса User.

Тогда в Location вы можете изменить эти классы.

...