php - 教义 | 关系的日期时间之间
问题描述
我正在做一个学校项目,我们为电影院建立一个网站。在管理中,您可以创建电影,然后您可以创建节目
我有 2 个实体:
节目
$id
$name
$movie
...
$date (when the movie starts)
电影
$id
$name
...
$shows
现在我的问题就像在真正的电影网站上一样,我希望时间表是从星期四到星期三。但我没有获得返回日期范围内所有电影的查询权:
电影资料库
$qb = $this->createQueryBuilder('movie')
->innerJoin('movie.shows', 'shows')
->where('shows.date > :thursday')
->andWhere('shows.date < :wednesday')
->setParameters([
'thursday' => $thursday,
'wednesday' => $wednesday
]);
return $qb->getQuery()->getResult();
查询只返回范围内有 1 个或多个节目的电影(及其所有节目)。
见这里(星期四是 31.05。星期三是 06.06):
如果在日期范围内有这部电影的一个节目,则将显示这部电影的所有节目
解决了它:
我需要制作 ->select() 并选择展位桌。
$qb = $this->createQueryBuilder('movie')
->innerJoin('movie.shows', 'shows');
->select('movie', 'shows')
->where('shows.date > :thursday')
->andWhere('shows.date < :wednesday')
->setParameters([
'thursday' => $thursday->format('Y-m-d H:i:s'),
'wednesday' => $wednesday->format('Y-m-d H:i:s')
])
->orderBy('shows.date', 'ASC')
;
解决方案
尝试反转查询,请像这样:
$qb = $this->createQueryBuilder('show')
->innerJoin('show.movie', 'movie')
->where('show.date > :thursday')
->andWhere('show.date < :wednesday')
->setParameters([
'thursday' => $thursday,
'wednesday' => $wednesday
]);
return $qb->getQuery()->getResult();
推荐阅读
- java - 调用错误 EditText() 空对象引用
- flutter - 如何从我的应用程序中打开另一个应用程序的特定页面?
- php - 如何在 laravel / php 中自动生成自定义格式号?
- redux - 如何使用 Redux 减速器和服务器 API
- apache-kafka - 无法在分布式模式下启动 Kafka 连接以进行弹性搜索
- openlayers - Openlayers 6 GeoJSON 简化 LineString
- c# - 在运行时更改验证定义/注册 ClientValidatorCache 实现
- jenkins - 我们有 Jenkins 支持的 liquibase 插件吗?
- c# - 当功能文件文本更改时,Specflow 更改 C# 文件后面自动生成的代码的 UTF 编码
- ios - carthage bootstrap 失败,因为并行 git 进程访问共享缓存 index.lock 文件