gpt4 book ai didi

sql - 高级 Laravel 查询

转载 作者:行者123 更新时间:2023-11-29 12:06:58 28 4
gpt4 key购买 nike

这是我的架构:

User 模型正常。

Question
- team_id
- question_body
Answer
- user_id
- question_id
- order
- is_private

用户可以对问题有一个主要答案,该答案本质上是具有最低顺序并且是公开的答案。

我需要为除经过身份验证的用户之外的每个用户获取问题的主要答案。我尝试了多种方法,但似乎无法弄清楚。以下是我目前在 Question 模型上的内容:

public function topAnswerForEachMember()
{
return $this->load(['answers' => function($query) {
return $query->public()
->where('user_id', '!=', Auth::user()->getKey());
}]);
}

这将返回不属于 auth 用户的问题的所有公共(public)答案。现在从这里我需要从每个用户那里得到订单最少的那个。我已经尝试过 groupBy 但我收到了汇总错误。我猜这将需要某种子查询,但我不熟悉这些。如果有人有想法,将不胜感激。谢谢!

最佳答案

如果我理解您正在尝试做什么,我认为如果您从反向 开始,这可能是最简单的。我会使用 User 模型并从那里提取您的答案。这是一个更简单的查询。

我不确切知道你的关系是什么,或者 public() 方法做了什么,但像这样的东西应该接近你的意图:

$users = User::whereHas('answers', function($query) use($question_id){
$query->where('question_id', $question_id)
->orderBy('order', 'asc')->first();
})
->where('id', "!=", Auth::user()->id)
->get();

从这里开始,该集合中的每个用户都应该对您正在调查的问题有一个最低顺序的答案。如果您还希望获得多个答案,可以用 limit() 代替 first()

关于sql - 高级 Laravel 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58942748/

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