Свойство [kodeSparepart] не существует в этом экземпляре коллекции - PullRequest
0 голосов
/ 11 мая 2019

Я хочу получить все данные из базы данных sparepart с помощью функции 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]);
    }
}

View

<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>

dd result

Ответы [ 3 ]

0 голосов
/ 11 мая 2019

Вы должны использовать множественное число вашего имени dtb для циклического перебора значений, поэтому ваша переменная 'sparepart' должна измениться на 'запасные части'

$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>
0 голосов
/ 11 мая 2019

Это не цикличный синтаксис в представлении 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]);
0 голосов
/ 11 мая 2019

Вы ничего не просматриваете. Вам нужно дать методу foreach() переменную из ваших запасных частей collection . Я думаю, что это может помочь вам избежать путаницы, назвать переменные коллекции множественным числом:

В вашем контроллере :

$spareparts = Sparepart::all();
return view('laporan/sisaStok', compact('spareparts'));

Тогда, самое главное, вы должны заранее сказать каждому, что оно должно производить. В вашем представлении измените:

foreach($sparepart)

до

@foreach($spareparts as $sparepart)

Не забывайте, что вы в лезвии, поэтому используйте @ перед foreach. Затем, если у вас есть свойство в модели запасных частей с именем kodeSparepart, это должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...