Как добавить данные из других моделей в представление в Laravel? - PullRequest
0 голосов
/ 06 мая 2019

Сценарий: вопрос генерируется пользователем на предыдущей странице просмотра.Например: «Вопрос 1».Этот введенный вопрос должен появиться на будущей странице создания, чтобы респондент мог его увидеть.Ответы следуют за этим.

Я не уверен, как связать это.Как получить данные из таблицы «вопрос» для отображения на странице создания «респондента»?

Я стремился установить отношения между классами Респонденты и Вопросы, а также редактировать контроллеры и просматривать / создаватьстраниц.

Модель респондента:

public function questions()
{
    return this->hasMany('App\questions');
}

Модель вопроса:

public function responses()
{
    return this->hasMany('App\respondents');
}

Контроллер вопросов:

public function index()
{
    $question = questions::all();
    $questionnaire = questionnaires::all();
    return view('question.index', compact('question', $question, 'questionnaire', $questionnaire));
}

Контроллер респондентов:

public function index()
{
    $question = questions::all();
    $respondent= respondents::all();
    return view('respondent.index', compact('question', $question, 'respondent', $respondent));
}

Страница создания респондента:

<div class="form-group">
    @foreach($question as $insert)
        <label for="title">{{$insert->question1}}</label>
        <label class="radio-inline"><input type="radio" name="response1" value="1">Agree</label>
        <label class="radio-inline"><input type="radio" name="response1" value="2">Disagree</label>
    @endforeach
</div>

В настоящее время я получаю сообщение об ошибке: «Неопределенная переменная: вопрос».

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

Заранее благодарю за любую помощь!

Ответы [ 2 ]

1 голос
/ 06 мая 2019

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

public function index()
    {
      $question = questions::all();
      $respondent= respondents::all();
      return view('respondent.index',compact('question', 'respondent'));
    }

Или вы можете сделать это так.

public function index()
    {
      $question = questions::all();
      $respondent= respondents::all();
      return view('respondent.index')->with(['question' => $question, 'respondent'=> $respondent]);
    }
0 голосов
/ 06 мая 2019

Проблема здесь:

return view('respondent.index',compact('question', $question, 'respondent', $respondent));

второй параметр view() является массивом.

Либо использовать:

return view('respondent.index',compact('question', 'respondent'));

compact создать массив из переданных переменных

или

return view('respondent.index',['question' => $question, 'respondent' => $respondent]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...