php - Laravel 8:在 ORM 中使用子查询的正确方法是什么?
问题描述
我有两个表用于这个查询。
第一个是forecasts
包含用户对几个游戏的预测,最重要的字段是user_id
:game_id
和userscore
然后是games
包含game_id
,week
和realscore
我过于简单化了,但这就是想法。在games
我有将在给定一周进行的所有游戏。
现在,我想获得用户在某一周预测的所有游戏,我已经解决了这个问题,DB::
但我认为只使用 ORM 应该是更好的方法,所以这是我尝试的:
$fore = Forecast::where('user_id', $user->id)
->addSelect(['game_id' => Game::select('id')
->where('week', $week)
->whereColumn('game_id', 'games.id')
])
->get();
现在我的问题是这个解决方案基本上是忽略->where('week', $week)
,如果我离开或走这条线,它会给我11条记录(我预测第1周有6场比赛,预测第2周有5场比赛,一切都是测试数据)。
我尝试使用select()
而不是addSelect()
并没有发现任何区别。
那么,我做错了什么?我必须使用子查询和whereIn()
?
解决方案
推荐阅读
- kotlin - 如何通过 ServiceLoader 注册 CoroutineExceptionHandler?
- reactjs - 使用我的 ionic react firebase 应用程序在测试飞行中遇到问题时遇到问题
- php - 尝试在 Laravel 原始查询中包含变量
- calculated-columns - 基于其他三列的计算列
- java - 为始终加密的 mssql 数据库实现 Hibernate JPA 时出现错误 persistence.xml
- python - 如何从另一个模块访问变量?
- javascript - 如何使用 ReactJS 在表标签中编写 if 条件
- html - 根据范围滑块拇指悬停设置元素样式
- bash - Crontab 和家酿
- html - CSS Marquee 超出了较小设备上的屏幕尺寸