【问题标题】:How to fix 'undefined variable: title' in Laravel如何修复 Laravel 中的“未定义变量:标题”
【发布时间】:2019-05-06 19:59:35
【问题描述】:

我正在尝试使用 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'));
    }

调查问卷的标题应与问题一起出现在索引页上。问题功能按预期工作,因此无需触及该部分。

任何帮助/支持将不胜感激。

【问题讨论】:

  • {{ $questionnaire->title??'' }}

    使用三元运算符。你也可以 dd($question->toArray()) 和 dd($questionnaire ->toArray());并在您的问题中发布
  • 也许title 属性是nullable 并且对于某些questionnaire 为空?至少您没有显示数据库架构或迁移模型,也没有显示您的模型
  • @iCoders null coalesce*

标签: laravel


【解决方案1】:

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

@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

【讨论】:

  • 太好了,谢谢!!我如何在每个问题块下面得到它?此刻,三个不同的标题都在彼此之下,它们之间需要有数据。将不胜感激!
  • @strong-highway 你有问题和问卷之间的关系设置吗?例如一个问题有很多问卷?
  • 是的,一份问卷有很多问题。因此,每个问题都应与该问卷的 ID 相关联,但尚未解决 - 太复杂了!
  • @strong-highway 现在看看我编辑的代码,这应该让你知道如何去做。
  • 谢谢,但这似乎对我不起作用。我收到一条错误消息,提示找不到列。我不完全确定该怎么做,就像我说的那样不幸的是我在这方面的经验很少
猜你喜欢
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 2018-06-07
  • 2019-11-23
  • 2017-04-23
  • 2021-01-10
相关资源
最近更新 更多