【问题标题】:Laravel Eloquent Query containing pivots and relationsLaravel Eloquent Query 包含枢轴和关系
【发布时间】:2022-01-09 17:58:51
【问题描述】:

我想根据从问卷中获得的值制作图表。这是我的数据库的样子(只显示我需要的):

问卷调查

id  
client_id   

questionnaire_answers


id  
questionnaire_id    
questionnaire_question_id   
answer

questionnaire_questions

id  
question

我想要的基本上是从特定客户那里获得问题 1(他们所有的问卷)的所有答案。 这个想法是他们回答一个基于严重程度的问题,所以基本上是 1 - 5。

我在控制器中试过这个:

$questionnaires = JsonResource::collection(
    Questionnaire::where('client_id', '=', 2)
    ->with([
        'clients', 
        'questionnaire_answers', 
        'questionnaire_answers.questionnaire_question', 
        'questionnaire_answers.questionnaire_question.questionnaire_question_type'
    ])
    ->get()
);

dd($questionnaires);

所有关系都有效。

【问题讨论】:

  • 您当前的查询有效吗?如果没有,您是否尝试过删除 JsonResource 部分? $questionnaires = Questionnaire::...get();
  • 是的,这部分工作正常,我只是需要有人帮助我从那个起点得到我想要的结果,我会尝试我得到的答案:)

标签: laravel vue.js eloquent


【解决方案1】:

我想要的基本上是从特定客户那里获得问题 1(他们所有的问卷)的所有答案。这个想法是他们回答一个基于严重程度的问题,所以基本上是 1 - 5。

我将重做查询,使其从 Question 模型开始。

假设以下关系:

  • QuestionbelongsToMany Questionnaire(使用Answer作为枢纽模型)
// Question model
public function questionnaires()
{
    return $this->belongsToMany(Questionnaire::class)
                ->withPivot('answer')
                ->as('answer')
                ->using(Answer::class);
}
$client_id = ...;

$question = Question::query()
    ->whereHas('questionnaires', function ($questionnaire) use ($client_id) {
        $questionnaire->where('client_id', $client_id);
    })
    ->with([
        'questionnaires' => function ($questionnaire) use ($client_id) {
            $questionnaire->where('client_id', $client_id)
                          ->with('client');
        },
        'question_type',
    ])
    ->find(1);
foreach ($question->questionnaires as $questionnaire) {
    $questionnaire->client->...        // client attributes
    $question->....                    // question attributes
    $questionnaire->answer->...        // answer attributes.
    $questionnaire->question_type->... // question_type attributes
}

【讨论】:

  • 我要试试这个,我会告诉你我能做到多远,谢谢你的意见!
猜你喜欢
  • 2019-07-27
  • 2018-05-16
  • 2014-10-23
  • 2021-03-06
  • 2020-05-06
  • 2019-07-05
  • 2016-03-25
  • 1970-01-01
相关资源
最近更新 更多