我正在尝试使用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'));
}
问卷标题应与问题一起出现在索引页上。问题功能按预期工作,因此该部分无需改动。
任何帮助/支持将不胜感激。
答案 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
您的变量令人困惑,这就是为什么您认为您应该打印两个集合,但只使用一个。如果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