如何在Laravel中修复'undefined variable:title'

时间:2019-05-06 10:39:24

标签: laravel

我正在尝试使用Laravel将来自MySQL中两个不同表的数据包含到一个视图中。显示“问题”数据,但不显示“问卷”数据,因此显示“未定义变量:标题”。我已经尝试在线寻找年龄,但没有一种解决方案似乎可以解决我的问题。

我已经尝试过在同一视图中加载它们,但是由于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 :(得分:0)

您现在拥有的是遍历问题集合并打印出每个问题标题:

@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

您的变量令人困惑,这就是为什么您认为您应该打印两个集合,但只使用一个。如果questionquestionnaire之间存在某种联系,那就是完全不同的球类运动,您需要为此提供更多详细信息。

我还认为,未定义的变量错误来自尝试使用$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