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



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

所以我有一张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()就足够了,但事实并非如此。

你认为我怎么能得到与user相匹配的所有id_book

问题是你的getLibrary返回ArrayCollection,你需要指定你到底想要的库

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

例如,基于此代码,您可以进行搜索,或者只是使用原则直接从数据库中
获取具有所需ID,user,任何您需要的库编辑
假设您想要与 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;

最新更新