Сопоставление сопоставления на таблице самообращения с таблицей перекрестных ссылок - PullRequest
0 голосов
/ 05 сентября 2018

Меня немного смущает вопрос о том, как добавить сопоставление для моей проблемы в symfony.

У меня есть две сущности: Пользователь и Друзья.

Таблица пользователей имеет идентификатор в качестве первичного ключа (авто). Таблица друзей имеет в качестве столбцов идентификатор (авто, первичный ключ), идентификатор пользователя и идентификатор друга. FriendId также является пользователем в таблице User.

Таблица друзей:

ID  userId    friendsId
---------------------
1    564          123
2    564          345
3    777          456


User Table:
ID  Name
---------------------
123  Alfons
345  Paul
456  Guiseppe
564  Mary
777  Belinda

Теперь я хочу отобразить две таблицы, чтобы я мог вызвать функцию в моем Userobject, например, скажем getFriends(): User. Эта функция должна возвращать объекты Users, ссылающиеся на таблицу друзей, где хранится идентификатор моего пользователя.

Правильным способом должна быть ассоциация «один ко многим», однонаправленная с таблицей соединений?

Заранее спасибо; -)

1 Ответ

0 голосов
/ 06 сентября 2018

Вот как должны выглядеть поля сущностей

В классе сущности пользователя

    /**
     * @var int
     * @ORM\Column(name="ID", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     * @ORM\Column(name="Name", type="string", length=100, nullable=true)
     */
    private $name;        


    /**
     * @var Collection
     * @ORM\OneToMany(targetEntity="Friend", mappedBy="friendUser")
     * @ORM\JoinTable(name="User")
     */
    private $friends;

В классе Friend Entity

    /**
     * @var int
     * @ORM\Column(name="ID", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * This is the user
     *
     * @ORM\ManyToOne(targetEntity="User", inversedBy="ID")
     * @ORM\JoinColumn(name="userId", referencedColumnName="ID")
     */
    private $user;

    /**
     * This is the friends' user entity
     *
     * @ORM\ManyToOne(targetEntity="User", inversedBy="ID")
     * @ORM\JoinColumn(name="friendsId", referencedColumnName="ID")
     */
    private $friendUser;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...