2015-09-07 4 views
1

У меня есть схемы баз данных, которая идет как это:Laravel 4,2 ORM - Запрос отношения с три столом

user 
    id 
    name 

question 
    id 
    title 


answer 
    id 
    answer_text 
    user_id 
    question_id 

Теперь я хочу, чтобы выбрать все пользователь все вопросы и пользователем данных каждый вопрос ответ.

Я пытаюсь с этим способом:

пользователя Модель

public function answer() 
{ 
    return $this->hasMany('answers','user_id','question_id'); 
} 

Ответ Модель

public function question() 
{ 
    return $this->belongsTo('questions','question_id'); 
} 

Теперь звонить из контроллера

$user_profile = User::find($userid); 

пользователя Но это только дает нам er данные таблицы и не возвращают вопросы и ответы.

ответ

0

Я думаю, что вы можете использовать отношение has-many-through. Поскольку вы используете Eloquent, попробуйте this example.

0

Решение на ваш вопрос «EAGER LOADING», посмотрим, как мы можем использовать его для вашей ситуации.

$user_profile = User::with('answer')->find($userid); 

это не даст вам вопрос от этого пользователя, причина заключается в отсутствии связи между пользователем и вопросом.

Говоря выше, вы можете получить ответы, и поскольку каждый ответ имеет отношение к вопросу таким образом, вы можете задать вопрос, но не идеальный способ сделать это.

Предложения ваших отношений и модель не подходит это могут быть достаточны для того, что вам нужно, но, как приложение растет, вы получите в ряд вопросов.

Если бы я сделал это, мои отношения были бы разными, включая структуру db. Для экс:

Пользователь: идентификатор, имя, .....

Вопрос: идентификатор, название, ...

Ответ: идентификатор, ответ, ...

UserQuestion: это должно быть сводной таблице User & Вопрос [user_id, question_id]

UserAnswer: это должно быть сводной таблице пользователя & Ответ [user_id, answer_id]

Вопрос Ответ: Это должна быть сводная таблица Вопроса & Ответ [question_id, answer_id]

У вас может быть другой сценарий этой сводной таблицы, с которой вы можете уйти с User_Question_Answer [user_id, question_id, answer_id], но это зависит от ваших потребностей приложения.

Смежные вопросы