Nested Loop di Edit Form Dengan Tabel Laravel

Saya punya create form dengan tabel yang dapat berjalan dengan baik seperti ini https://i.stack.imgur.com/zWz5r.png.

Tetapi ketika saya menambahkan value untuk edit form, bentuknya jadi seperti ini:

Edit form 1: https://i.stack.imgur.com/PJrMg.png dan 2: https://i.stack.imgur.com/0ocIp.png

Data sasaran, indikator, dan pertanyaan (data yg diperlukan) diambil dari database dan di-loop dengan nested loop. Saya memiliki 3 data sasaran, 12 indikator, dan 47 pertanyaan, dan semuanya ini dibagi-bagi dengan rowspan. Tetapi ketika saya membuat edit form, rowspan hanya bekerja untuk setiap sasaran pertama, dengan indikator pertama dan pertanyaan pertama. Indikator kedua untuk setiap sasaran pertama tidak akan keluar dan pertanyaan akan duplicate sebanyak 47 kali (seperti edit form 1)

FYI, saya tidak menggunakan ajax dan framework JS.

Model laporan indikator:

 public function data_laporan() {
    return $this->hasMany(DataLaporan::class);
}

Model data laporan:

protected $fillable = ['id_laporan', 'id_pertanyaan','jumlah','keterangan','bukti'];

public function laporan() {
    return $this->belongsTo(LaporanIndikator::class, 'id_laporan','id');
}

public function pertanyaan() {
    return $this->belongsTo(Pertanyaan::class, 'id_pertanyaan','id');
}

Model pertanyaan

protected $fillable = ['id_indikator', 'pertanyaan'];

public function indikator() {
    return $this->belongsTo(DataIndikator::class, 'id_indikator','id');
}

public function data_laporan() {
    return $this->belongsTo(DataLaporan::class, 'id_laporan','id');
}

Model indikator:

protected $fillable = ['id_sasaran', 'indikator'];

public function sasaran() {
    return $this->belongsTo(Sasaran::class, 'id_sasaran','id');
}

public function pertanyaan() {
    return $this->hasMany(Pertanyaan::class, 'id_indikator','id');
}

Model sasaran:

protected $fillable = ['sasaran'];

public function indikator() {
    return $this->hasMany(DataIndikator::class, 'id_sasaran','id');
}

Controller:

public function edit($id)
{
    $sasarans = Sasaran::all();
    $laporan_indikators = LaporanIndikator::where('id',$id)->first();
    $data_laporans = DataLaporan::where('id_laporan',$id)->get();
    return view('indikator-kinerja.edit',compact('laporan_indikators','data_laporans','sasarans'));
}

View:

@foreach($sasarans as $i => $sasaran)
@foreach($sasaran->indikator as $indikator)
@foreach($data_laporans as $data)
<tr>
    @if($loop->first)
    <td style="text-align:center; vertical-align:middle;"
        rowspan="{{$indikator->pertanyaan->count()}}">
        {{$i+1}} </td>
    <td style="vertical-align:middle;"
        rowspan="{{$indikator->pertanyaan->count()}}">
        {{$sasaran->sasaran}} </td>
    <td style="vertical-align:middle;"
        rowspan="{{$indikator->pertanyaan->count()}}">
        {{ $indikator->indikator}} </td>
    @endif
    <td style="vertical-align:middle;">
        <textarea style="height:130px;"
            class="form-control transparent disable"
            readonly>{{ $data->pertanyaan->pertanyaan}}</textarea>
        <input type="hidden" name="id_pertanyaan[]" class="form-control"
            value="{{$data->id_pertanyaan}}">
    </td>
    <td>
        <input type="text" name="jumlah[]"
            class="form-control @error('jumlah') is-invalid @enderror"
            value="{{$data->jumlah}}">

        <!--Error Message-->
        @error('jumlah')
        <span class="invalid-feedback" role="alert">
            <strong>{{ $message }}</strong>
        </span>
        @enderror
    </td>
    <td>
        <textarea name="keterangan[]"
            class="form-control @error('keterangan') is-invalid @enderror" value="$data->keterangan"></textarea>

        <!--Error Message-->
        @error('keterangan')
        <span class="invalid-feedback" role="alert">
            <strong>{{ $message }}</strong>
        </span>
        @enderror
    </td>
    <td>
        <div class="custom-file"
            style="margin-left:10px; margin-right:10px;">
            <input type="file" name="bukti[]" class="custom-file-input">
            <label class="custom-file-label"></label>
        </div>

        <!--Error Message-->
        @error('bukti')
        <span class="invalid-feedback" role="alert">
            <strong>{{ $message }}</strong>
        </span>
        @enderror

    </td>
</tr>
@endforeach
@endforeach
@endforeach

Apakah mungkin ada yang salah di relationship-nya? Mohon bantuannya. Terima kasih

avatar amandajgby
@amandajgby

1 Kontribusi 0 Poin

Dipost 2 tahun yang lalu

Belum ada Jawaban. Jadi yang pertama Jawaban

Login untuk ikut Jawaban