php - Laravel 在最后一个元素的 foreach 循环外打印集合返回未定义的变量
问题描述
我有一个集合,如果在 foreach 循环中打印,则返回整个集合直到结束:
@foreach($questions as $q)
@endforeach
<a href="{{url('basic-test/'. $q->id) }}" class="btn btn-info">Next</a> //undefined variable on the last item
但是,如果我在检索最后一条记录之前将其置于 for 循环之外,则会出现未定义的变量错误。我的控制器:
public function getQuestion(Request$request, $id)
{
$first = Question::findOrFail($id);
$request->session()->push('question', $id);
$questions = Question::whereNotIn('id', session('question'))->inRandomOrder()->get();
return view('basicTest') ->with(compact( 'questions', 'first'));
}
解决方案
您可以使用Laravel collection
助手来获取last
收藏品。
@foreach($questions as $q)
<a href="{{url('basic-test/'. $q->id) }}" class="btn btn-info">Next</a>
@endforeach
<a href="{{url('basic-test/'. $questions->last()->id) }}" class="btn btn-info">Next</a>
您的查询有一个错误删除find()
并将其更改为,因为调用find()
将返回 1 个项目而不是集合:
$questions = Question::whereNotIn('id', session('question'))->inRandomOrder()->get();
此外,因为您没有运行任何程序where
,firstOrFail
您可以将其缩短为:
$first = Question::findOrFail($id);
推荐阅读
- python - 如何更改灰度图像的 cairo 上下文源颜色
- macos - 无法注册类 TFMXApplicationDelegate
- c - C pthread 互斥锁
- javascript - 尝试用秒对日期和时间进行排序
- abaddressbook - 如何在 CNContact 框架中同步联系人应用程序和我的应用程序之间的联系人?
- excel - PowerPivot DAX 公式如果然后用于日期
- spring - 如何从 Spring 应用程序操作文件
- android - 如何使 html 表格的内容与任何屏幕分辨率兼容?
- mysql - 我可以通过 SSH 将 ö 等字符上传到 MYSQL 数据库吗?
- java - Cucumber for REST,重复步骤时写入功能文件