Получить данные из отношений, Laravel - PullRequest
2 голосов
/ 20 марта 2020

У меня есть запрос, в котором я получаю данные, используя with, но в этой таблице у меня есть другое отношение, и я хочу получить данные из этого, и я не уверен, как.

Результат, который я нужно от question_topics до lk_answers (там у меня есть названия для topic_1, topic_2 ...)

enter image description here

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));
}

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Первый В модели, используемой для question_topics, необходимо определить отношения для best_match_topic, topic_1, topic_2 и topic_3:

например. QuestionTopic class

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();
0 голосов
/ 20 марта 2020

Если я правильно понимаю ваш вопрос, вы хотите, чтобы ответ на вопрос 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_topics в каждом объекте Вопрос. L oop итерация, как в php $loop_raw->question_topics->best_match_topic

...