首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于关系组中关键字存在的雄辩查询

基于关系组中关键字存在的雄辩查询
EN

Stack Overflow用户
提问于 2021-06-24 22:32:17
回答 1查看 23关注 0票数 0

所以这本书给了我一种精神上的奔跑。我有Rows、Users和RowActivity型号。每次用户与行交互时,它都会在行活动表中生成一行,说明用户更改了什么状态。每行可以有3-8个活动条目,每行只有一个用户引用。所以我的问题是:我想分析特定用户已经交互过的行。因此,我想搜索用户A,并获得他们接触到的所有行。但要做到这一点,唯一的方法是查询RowActivity表。

因此,查询实质上是这样的:

Row::whereHas('rowActivity')->whereWithin(Collection of RowActivity, user_id = requested-user)->get();

我知道我可以走很长一段路,查询RowActivity::where('user_id', $requestedUser),然后根据这些结果的相关row_id获得所有其他的行活动,但我觉得有一种干净的方法,我不知道。

为澄清起见,行活动用于生成有关哪些用户更改了行的状态以及更改之间的持续时间有多长的报告。因此,我需要获得与一行相关联的所有活动,以及用户触摸的所有行,以便我可以分析他们的部分交互花费了多长时间。

如果我需要作为一个多级查询来做这件事,那就这样吧,我对此并不反感,我只想确保我的查询是原始的。如果我把它作为多层的,它看起来会像这样:

代码语言:javascript
运行
复制
$ra = RowActivity::where('user_id', $requestedUser)->pluck('row_id');
$rows = Row::with('rowActivity')->find($ra); //get all rows and their associated activities based on the plucked row id from query 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-24 22:36:32

您可以在whereHas()中做到这一点。我希望这就是你想要的

代码语言:javascript
运行
复制
Row::whereHas('rowActivity', function($query) use($requestedUser) {
    $query->where('user_id', $requestedUser);
})->get();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68117769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档