-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

4

1 回答 1

0

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

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

例如,基于此代码,您可以进行搜索,或者只使用教义来获取具有所需 ID、用户、任何您需要的库,直接从数据库中
编辑
假设您想要与 ID = 4 的用户相关的所有库

... // your code
$user = $this->getDoctrine()->getRepository('your user class')->find(4); // here we find your user from DB
$libraries = $user->getLibrary() // here we get all libraries which are in relation with user #4, you might want to rename the function as it returns ArrayCollection of Libraries, not Library
$bookIds = array();
foreach($libraries as $library) {
    $bookIds[] = $library->getIdBook(); 
}
dump($bookIds); // all user #4 book ids
die;
于 2020-01-18T19:57:34.560 回答