gpt4 book ai didi

php - 从数据库中获取趋势帖子 - symfony 查询生成器 - MySQL

转载 作者:行者123 更新时间:2023-11-28 23:18:00 25 4
gpt4 key购买 nike

我正在尝试进行一个查询,该查询必须结合来自 2 个不同表的信息,但我在逻辑上遇到了问题。

这是我的表格,我排除了一些不相关的信息

发布(groupId,创建日期)

postbump(userId, postId)

我正在尝试获取“趋势”的帖子。换句话说,我需要得到的帖子是

  1. 在给定的组中,(由$groups数组提供)

  2. 在给定日期之后,(由 $date 提供)

  3. 按凸起的数量排序

这是我正在构建的功能,它只会获取新帖子,但它可能有助于理解我所追求的目标。请注意,我拥有的代码的当前存储库是 post 存储库(对于那些不熟悉 symfony 查询生成器的人来说,它基本上意味着它会自动从 post 表中选择)。

public function getNewHomeFeedPosts($groups){
$qb = $this->repository->createQueryBuilder('x');
$qb->select('x');
$qb->where('x.groupId IN (:groups)');
$qb->setParameter('groups',$groups);
$qb->orderBy('x.dateCreated','DESC');
return $qb->getQuery()->getResult();

}

这就是我目前所拥有的,我真正的问题在于按每个帖子的颠簸数量进行排序。我认为在某些时候必须使用连接。

public function getTrendingHomeFeedPosts($groups, $date){
$qb= $this->repository->createQueryBuilder('x');
$qb->select('x');
$qb->where('x.groupId IN (:groups) AND x.dateCreated < :dateCreated');
$qb->setParameter('groups',$groups);
$qb->setParameter('dateCreated', $date);
//todo
return $qb->getQuery()->getResult();
}

如果您不熟悉 querybuilder 语法,那么用 SQL 回答就可以了。

最佳答案

我不知道 symfony,所以我的答案是在 sql 中。您需要加入 postpostbump 表,按 postid 分组并计算颠簸次数并按组和日期过滤:

select p.postid, p.groupid, p.datecreated, count(*) as postbumps
from post p
left join postbump pb on p.postid=pb.postid
where p.groupid in (...) and p.datecreated<...
group by p.postid, p.groupid, p.datecreated
order by count(*) desc

另请注意,您不能简单地将参数数组绑定(bind)在 in 运算符中作为单个值 - 除非 symfony 的查询构建器使用字符串操作来设置参数而不是准备语句。

关于php - 从数据库中获取趋势帖子 - symfony 查询生成器 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43023815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com