Как исправить «неопределенную переменную: заголовок» в Laravel - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь включить данные из двух разных таблиц в MySQL в одно представление с помощью Laravel.Данные «вопросов» показывают, а данные «вопросника» - нет, следовательно, «неопределенная переменная: заголовок».Я пытался искать онлайн целую вечность, но ни одно из решений, похоже, не решило мою проблему.

Я уже пытался загрузить их в том же виде, но я не уверен, что делаю это правильно, так как я чрезвычайноновичок в Laravel!

файл index.blade.php:

@foreach($question as $questionnaire)
        <h4>{{ $questionnaire->title }}</h4>
    @endforeach

Файл QuestionsController:

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

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

Любая помощь / поддержка будет принята с благодарностью.

1 Ответ

0 голосов
/ 06 мая 2019

То, что у вас есть сейчас, это циклически просмотреть коллекцию вопросов и распечатать название каждого вопроса:

@foreach($question as $questionnaire) //questionnaire here is a single question from your $questions collection
    <h4>{{ $questionnaire->title }}</h4>
@endforeach

У вас есть другая коллекция questionnaire, и вы не зацикливаетесь на ней, чтобы распечатать ее значения. Так что вам нужно следующее:

@foreach($questionnaire as $item)
    <h4>{{ $item->title }}</h4>
@endforeach

Ваши переменные сбивают с толку, поэтому вы думаете, что должны распечатать обе коллекции, но вы используете только одну. Если есть отношения между question и questionnaire, то это совершенно другая игра с мячом, и вам нужно будет предоставить более подробную информацию для этого.

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

- РЕДАКТИРОВАТЬ

Как вы сказали, в вашей анкете много вопросов, вы можете сделать следующее:

в ваших анкетах модель класса:

public function questions() 
{
   return $this->hasMany(questions::class);
}

В вашем контроллере:

$questionnaires = questionnaires::with('questions')->get();

в представлении:

@foreach($questionnaires as $questionnaire)
    <h4>{{ $questionnaire->title }}</h4>

    @foreach($questionnaire->questions as $question)
       -- <h4>{{ $question->title }}</h4>
    @endforeach

@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...