symfony - 检索用户的收藏夹 symfony
问题描述
我需要检索用户最后 9 个最喜欢的帖子。我有一个用户个人资料页面,其中列出了所有出版物以及每个用户创建的所有食谱,我有一个侧边栏,我想在其中显示最后 9 个收藏 夹 收藏夹看这里 FavoriteRepository
public function lastXFavorite(Publication $publication, User $user, $nombre)
{
return $this->createQueryBuilder('f')
->join('f.publication', 'pub')
->join('f.user', 'user')
->andWhere('pub.id = :pubId AND user.id = :userId')
->setParameter('pubId', $publication->getId())
->setParameter('userId', $user->getId())
->setMaxResults($nombre)
->getQuery()
->getResult();
}
这是我的用户个人资料页面 ProfilController的控制器
/**
* @IsGranted("ROLE_USER")
* @Route("/profil/{id}", name="profil", methods={"GET","POST"})
*
*/
public function index(User $user, PublicationManager $publicationManager): Response
{
// historique des les publications
$em = $this->getDoctrine()->getManager();
$publications = $em->getRepository('App:Publication')->findBy(
array('users' => $user->getId()),
array('created_at' => 'Desc')
);
// Lister all mes Favorites
$favorites = $em->getRepository('App:Favorite')->findBy(
array('user' => $user->getId())
);
// last 9 favorites
return $this->render('profil/index.html.twig', [
'publications' => $publications,
'mesRecettes' => $publicationManager->getRecetteByUser($user),
'mesFavoris' => $favorites,
'recettes' => $publicationManager->allRecette(),
'user' => $user,
'lastRecettes' => $publicationManager->lastXRecette(),
'lastPRecettes' => $publicationManager->lastPRecette($user, 6),
]);
}
这是出版物PublicationManager的经理
class PublicationManager
{
protected $em;
public function __construct(EntityManagerInterface $entityManager)
{
$this->em = $entityManager;
}
public function getPublicationByUser(User $user)
{
return $this->em->getRepository(Publication::class)->getPublicationUser($user);
}
public function getRecetteByUser(User $user)
{
return $this->em->getRepository(Publication::class)->findBy(
['type' => true, 'users' => $user->getId()],
['created_at' => 'desc']
);
}
public function allRecette()
{
return $this->em->getRepository(Publication::class)->findBy(
['type' => true],
['created_at' => 'desc']
);
}
public function allPublication()
{
return $this->em->getRepository(Publication::class)->findBy([], ['created_at' => 'desc']);
}
public function lastXRecette()
{
return $this->em->getRepository(Publication::class)->lastXRecette(4);
}
public function lastPRecette(User $user, $cant)
{
return $this->em->getRepository(Publication::class)->lastPRecette($user, $cant);
}
我是初学者,我很感激这些信息。谢谢
解决方案
我认为你不应该在哪里pub.id = :pubId。
因此,尝试使用第一个结果和最大结果并按以下顺序排序:
public function lastXFavorite(Publication $publication, User $user, $nombre)
{
return $this->createQueryBuilder('f')
->join('f.publication', 'pub')
->join('f.user', 'user')
->andWhere('user.id = :userId')
->setParameter('userId', $user->getId())
->orderBy('f.id', 'DESC')
->setFirstResult(0)
->setMaxResults(9)
->getQuery()
->getResult();
}
推荐阅读
- python - ~~由于创建一个新文件,循环在 Python 中死去~~ 读/写问题已解决
- jboss - sessionContext.getCallerPrincipal().getName() 返回“匿名”
- html - 向下滑动和向上滑动 div - 仅限 HTML 和 CSS
- qt - 如何在 ubuntu 上找到 Qt5 包,特定版本?
- javascript - 如何在 Rails 6 中使用 Reveal.js?
- macos - macOS 上的法语键盘,改变波浪号 ~ 键的行为
- r - R 向量 - 找到可以从两个向量的差异中获得的最大正结果的计数
- c - 使用另一个枚举进行枚举初始化
- google-chrome - 如何让 Electron 使用 chrome://flags/#enable-force-dark
- java - 使用 Apache HTTPAsyncClient 为每个 HTTPS 请求自定义 SSLContext