Сопоставление ассоциаций в таблице саморегулирования с таблицей перекрестных ссылок

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

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

Пользовательская таблица имеет идентификатор в качестве первичного ключа (авто). В таблице друзей есть столбцы с идентификаторами (авто, первичный ключ), userId и friendId. 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. Эта функция должна возвращать объекты Usersobjects, ссылающиеся на таблицу друзей, в которой хранится мой идентификатор пользователя.

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
34
1

Ответы 1

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

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

    /**
     * @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;

Другие вопросы по теме