我想使用all()函数从备件数据库中获取所有数据,然后在视图中使用foreach来访问数据,但我一直得到该错误。当我对其他视图刀片使用相同的方法时,效果很好。
控制器
public function LaporanSisaStok(Request $request) {
if($request->kode == "")
{
$spareparts = Sparepart::all();
return view('laporan/sisaStok')->with(['spareparts' => $spareparts]);
}
else {
$query = DB::table("historisparepart")->select(DB::raw('EXTRACT(MONTH FROM tanggal) AS Bulan, SUM(jumlah) as Sisa'))
->where('kodeSparepart', $request->kode)
->groupBy(DB::raw('EXTRACT(MONTH FROM tanggal)'))
->get();
return view('printPreview/sisaStok', ['data'=>$query]);
}
}
查看
<form method="POST" action="{{ route('laporan.sisaStok') }}" enctype="multipart/form-data">
@csrf
<div class="form-group-row">
<label for="sparepart" class="col-sm-2 col-form-label">Sparepart</label>
<select class="custom-select" id="kode" name="kode">
<option value="">-Pilih Sparepart-</option>
foreach($spareparts as $sparepart)
{
<option value="{{$sparepart->kodeSparepart}}"> {{$sparepart->namaSparepart}} </option>
}
</select>
</div>
<br>
<button type="submit" class="btn btn-info"><i class="oi oi-task"></i> Cari </button>
答案 0 :(得分:0)
您没有遍历任何内容。您需要从零件集合中为foreach()
方法提供一个变量。我认为将集合变量命名为复数可能会避免混淆:
在您的控制器中:
$spareparts = Sparepart::all();
return view('laporan/sisaStok', compact('spareparts'));
然后,最重要的是,您需要告诉foreach它应该产生什么。在您的视图中,更改:
foreach($sparepart)
到
@foreach($spareparts as $sparepart)
别忘了您处于刀片式服务器中,因此在进行foreach之前使用@
。然后,假设您实际上在备件模型上有一个名为kodeSparepart
的属性,那么应该可以正常工作。
答案 1 :(得分:0)
您应使用dtb名称的复数形式遍历值,以便将“ sparepart”变量更改为“ spareparts”
$sparepart = Sparepart::all();
return view('laporan/sisaStok')->with(['spareparts' => $sparepart]);
在您的视图中,将循环更改为新变量并使用当前变量进行循环,因此您的视图应如下所示:
查看
<div class="form-group-row">
<label for="sparepart" class="col-sm-2 col-form-label">Sparepart</label>
<select class="custom-select" id="kode" name="kode">
<option value="">-Pilih Sparepart-</option>
@foreach($spareparts as $sparepart)
{
<option value="{{$sparepart->kodeSparepart}}"> {{$sparepart->namaSparepart}} </option>
}
@endforeach
</select>
</div>
答案 2 :(得分:0)
这不是laravel视图中的循环语法
foreach($spareparts as $sparepart)
{
<option value="{{$sparepart->kodeSparepart}}"> {{$sparepart->namaSparepart}} </option>
}
应该是这样
@foreach($spareparts as $sparepart)
<option value="{{$sparepart->kodeSparepart}}"> {{$sparepart->namaSparepart}} </option>
@endforeach
另一个问题是您以错误的方式传递数据。应该是这样
return view('printPreview/sisaStok', ['spareparts'=>$query]);