Symfony 5,如何在模板中显示当前用户隶属于多对多关系的变量

Symfony 5, How to display in a template, a variable where the current user is affiliated with a ManyToMany relations

我希望当我的当前用户访问该页面时,他可以看到他与 ManyToMany 关系相关联的主题。

我的实体问题

/**
 * @ORM\Column(type="string", length=255)
 */
private $name;

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="matters")
 * @ORM\JoinColumn(nullable=false)
 */
private $user;

/**
 * @ORM\ManyToMany(targetEntity="App\Entity\User", inversedBy="studentsMatters")
 */
private $student;

和我的实体用户

/**
 * @ORM\Column(type="string", length=255)
 */
private $fullname;

/**
 * @ORM\OneToMany(targetEntity="App\Entity\Matter", mappedBy="user")
 */
private $matters;

/**
 * @ORM\ManyToMany(targetEntity="App\Entity\Matter", mappedBy="student")
 */
private $studentsMatters;

和我的控制器获取用户和事项的存储库

/**
 * @Route("/", name="student_index", methods={"GET"})
 */
public function index(MatterRepository $matterRepository, UserRepository $userRepository): Response
{
    return $this->render('student/index.html.twig', [
        'matters' => $matterRepository->findAll(),
        'users' => $userRepository->findAll(),
    ]);
}

所以在我的模板中,我尝试了一些类似的东西

{% for user in users %}
{% for matter in matters %}
    {% if matter.student == app.user.fullname %}
        <div>{{ matter.name }}</div>
    {% endif %}
{% endfor %}
{% endfor %}

但这行不通...

很好,我找到了解决问题的方法!

首先,我创建了一个包含 2 个 OneToMany 的新实体(一个与我的事务相关,另一个与用户相关。

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Matter", inversedBy="studentUsers")
 * @ORM\JoinColumn(nullable=false)
 */
private $studentMatter;

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

在我的控制器中,我添加了这三行以发送给当前用户。

$studentUser = new StudentUser();
$user = $this->getUser();
$studentUser->setUser($user);

因此,在我的表单中,我只需要 select 我想要的变量 studentMatter。

最后,我添加条件

{% if student_user.user.id == app.user.id %}
    <div>{{ student_user.studentMatter.name }}</div>
{% endif %}

感谢所有花时间帮助我的人:)