此集合实例上不存在属性[kodeSparepart]

时间:2019-05-11 15:02:56

标签: laravel

我想使用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>

define jaCoCoArgLine

3 个答案:

答案 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]);