将数据从两类恢复为多对多

问题描述 投票:-1回答:2

我有一个用户表和一个库表,它们之间的关系是多对多的。

所以我有一个user_library表。

我设法将数据从用户添加到库表,但此后我无法恢复数据。

我这样添加它们:

    $em = $this->getDoctrine()->getManager();
    $repoUser = $em->getRepository('App:User');
    $user = $repoUser->findOneBy(['token' => $token_user]);

    $library = new Library();
    $library->setIdBook($id_book);

    $user->addLibrary($library);
    $em->persist($library);
    $em->persist($user);
    $em->flush();

我以为只是做:$user->getLibrary()->getIdBook()就足够了,但事实并非如此。

您认为我如何获得与id_book匹配的所有user

symfony doctrine many-to-many symfony5
2个回答
0
投票

事实是,您的getLibrary返回ArrayCollection,您需要指定您确切想要的库

$libararies = $user->getLibrary() // <- this returns ArrayCollection
$library = $libraries->first() // <- return 1st element

基于此代码,您可以进行搜索,例如,或仅使用doctrine即可获取具有所需ID,用户的库,而无需直接从数据库中获取所需的任何内容


0
投票

您的方法仅返回第一个元素。如何返回与我的用户对应的所有元素?

此外,当用户添加相同的数据时,该数据也会添加到数据库中。我正在为您放置屏幕截图,以便您了解。

My table User

My table User_Library

My table Libray

© www.soinside.com 2019 - 2024. All rights reserved.