Как отобразить отношение массива ManyToMany в Symfony - PullRequest
0 голосов
/ 04 февраля 2019

Я изучаю Symfony и создаю проект.У меня есть две сущности User и Relation, которые имеют отношение ManyToMany.

Итак, у меня есть таблицаlation_user, которая имеет user_id и отношение_id

У меня есть это в MainController.php

 public function index(UserRepository $users,RelationRepository $relation)
{
    $user= $users->findAll();
    $relations =  $this->getDoctrine()->getRepository(Relation::class) ->findBy([],['id' => 'ASC']);
    return $this->render('main/index.html.twig', [
        'user' => $user,
        'relations'=>$relations
    ]);
}
public function family(UserRepository $users, RelationRepository $relation, $id)
{
     $user = $users -> findAll();
    $entityManager = $this->getDoctrine()->getManager();
        $relation = $entityManager->getRepository(Relation::class)->find($id);

    if($relation == null and $user ==null){
        return $this->redirectToRoute('main');
    }else{
    return $this->render('main/family.html.twig', [
        'relations' => $relation,
        'users' => $user,
    ]);
    }
}

У меня есть этот код в index.html.twig

{% extends 'base.html.twig' %}

{% block title %}Family{% endblock %}

{% block body %}

<h1>Family</h1>
    {% for relation in relations %}
{% for users in user %}

<li><a href="{{ path('family',{'id':users.id}) }}">{{ users.firstname}} {{ users.partner }}</a></li>
{% endfor %}
{% endfor %}
{% endblock %}

, которые отображают 2 строки: user_id_1 с отношение_id_1 и user_id_1 с отношение_ид_2

Я хотел бы знать, как иметь массив, который содержит user_id_1с обеими отношениями_ID

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 08 февраля 2019

Вам не нужно извлекать все отношения в вашем контроллере, чтобы сделать это.Ваша сущность User должна реализовывать метод getRelations (), который позволяет вам сделать это:

{% for user in users %}
    User id {{ user.id }} is in relation with:
    <br>

    {% for relation in user.relations %}
        {# here you are looping through all relations of a user so you can use both user.id and relation.id and others fields related to relation entity #}

        - {{ relation.id }}<br>
    {% endfor %}
{% endfor %}

Так что вы можете пропустить запрос $ Relations в вашем контроллере:

// Not needed anymore:
$relations =  $this->getDoctrine()->getRepository(Relation::class) ->findBy([],['id' => 'ASC']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...