@klinnov

Как построить отношения между моделями?

Здравствуйте!
Есть 3 тиблици и соответственно 3 модели. Одна из них в роли связи между двумя другими.
Эти модели:
- User
- Question
- QuesionUser

Идет запрос который должен получить все вопросы которые прикреплены к пользователю.
Делаю это следующим образом:

UserController:
/**
     * Get user questions
     *
     * @param int $id User id
     * @param int $form_id Form id
     * @return Response
     */
    public function getQuestionsByForm($id, $form_id): Response
    {
        $questions =  QuestionUser::where('user_id', $id)->where('form_id', $form_id)
            ->with('question_data')
            ->get();
        $data = [];
        foreach ($questions as $question) {
            array_push($data, $question['question_data']);
        }
        return response([
            'data' => $data
        ], 200);
    }


app\QuestionUser.php:
public function question_data()
    {
        return $this->hasOne('App\Question', 'id', 'question_id');
    }

Сейчас вопрос - как это сделать правильно?
Спасибо!
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
@kirill-93
Все гораздо проще.
Модели нужно 2:
User и Question
Таблица связи между ними должна называться question_user и иметь поля user_id и question_id.
В модели User прописать связь:
public function questions()
{
    return $this->belongsToMany('Models\Question');
}

Теперь получить вопросы пользователя можно, например, так
User::find(1)->questions;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы