2

我有一个查询,我使用 获取数据with,但在该表中我有另一个关系,我想从中获取数据,但我不知道如何。

我需要的结果在question_topicsand之间lk_answers(我有 topic_1、topic_2 的名称......)

在此处输入图像描述

public function index(Request $request)
{
    $query = Question::select(['id', 'free_text', 'title', 'topics_id', 'created_at']);
    $query->with('question_topics');
    $query->question_topics->with('lkp_answers');  // something like that, but this line is not working.
    return response()->json($query->paginate(5));
}
4

2 回答 2

1

首先 在用于 的模型上question_topics,您需要定义best_match_topictopic_1topic_2和的关系topic_3

例如。QuestionTopic班级

class QuestionTopic {
    public function bestMatchTopic() {
        return $this->belongsTo(Topic::class, 'best_match_topic');
    }

    public function topicOne() {
        return $this->belongsTo(Topic::class, 'topic_1');
    }

    public function topicTwo() {
        return $this->belongsTo(Topic::class, 'topic_2');
    }

    public function topicThree() {
        return $this->belongsTo(Topic::class, 'topic_3');
    }

}

然后,如果你想得到一个关系的关系,你可以使用点符号来访问它们:

Question::with('question_topics.bestMatchTopic', 
                   'question_topics.topicOne', 
                   'question_topics.topicTwo', 
                   'question_topics.topicThree')->get();
于 2020-03-20T13:07:15.600 回答
0

如果我正确理解您的问题,您希望 question_topics 数据以 json 形式返回响应。

public function index(Request $request)
{
    $query = Question::select(['id', 'free_text', 'title', 'topics_id', 'created_at']);
    $query->with('question_topics');
    return response()->json($query->paginate(5));
}

这将为您提供一个 Question 数组,每个 Question 对象中都有一个 question_topics 数组。循环迭代就像在 php 中一样$loop_raw->question_topics->best_match_topic

于 2020-03-20T12:48:44.250 回答