Avant de commencer, quelques traductions car mon code n'est pas en anglais :
fournisseur = fournisseur
travail=travail
J'ai donc deux tableaux, un tableau des fournisseurs et une feuille de calcul. Chaque fournisseur peut posséder plusieurs œuvres, et chaque œuvre ne peut appartenir qu’à un seul fournisseur. Il devrait s'agir d'une relation un-à-plusieurs. C'est ma table
Liste des fournisseurs
Établi
Donc, j'utilise LARAVEL comme framework. J'ai créé une table de fournisseurs avec un bouton d'action et je veux qu'elle fonctionne et si vous cliquez sur le bouton, une liste de travaux (pekerjaan) appartenant au nom exact du fournisseur s'affichera. Comme vous pouvez le voir dans le tableau ci-dessus, j'ai ajouté le nom du fournisseur (nama) à une « feuille » dans la base de données. Comment puis-je faire fonctionner cette fonctionnalité ? Je suis nouveau sur Eloquent dans Laravel.
Voici mon fichier modèle :
Jobs.php
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model as Eloquent; class Pekerjaan extends Eloquent { use HasFactory; protected $guarded = []; public function penyedia(){ return $this->belongsTo('App\Models\Penyedia'); } }
Provider.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model as Eloquent; class Penyedia extends Eloquent { use HasFactory; protected $guarded = []; public $timestamps = false; public function pekerjaan(){ return $this->hasMany('App\Models\Pekerjaan'); } }
AdminController.php
public function showpekerjaan(){ $penyedia = penyedia::all(); return view('admin.showpekerjaan', compact('penyedia')); }
tabelnilai_pekerjaan.blade.php (Je souhaite afficher cette fiche en fonction du fournisseur)
<section class="content"> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="card"> <div class="card-header"> <h3 class="card-title">Tabel Nilai Pekerjaan</h3> </div> <!-- /.card-header --> <div class="card-body table-responsive"> <table id="tabelpekerjaan" class="table table-bordered"> <thead> <tr> <th style="width: 10px">No.</th> <th>Paket Pekerjaan</th> <th>Nama Perusahaan</th> <th>Lokasi Pekerjaan</th> <th>HPS</th> <th>Nilai Kontrak</th> <th style="width: 120px">Aksi</th> </tr> </thead> <tbody> @php $no = 1; @endphp @foreach ($penyedia as $penyedias) <tr> <td>{{$no++}}</td> <td>{{$penyedias->pekerjaan->pekerjaan}}</td> <td>{{$penyedias->pekerjaan->nama}}</td> <td>{{$penyedias->pekerjaan->lokasi}}</td> <td>Rp. {{number_format($pekerjaans->pekerjaan->hps,0,',',',')}}</td> <td>Rp. {{number_format($pekerjaans->pekerjaan->nilai_kontrak,0,',',',')}}</td> <td> <a href="#" type="button" class="btn btn-primary btn-block btn-outline-primary">Edit</a> </td> </tr> @endforeach </tbody> </table> </div> <!-- /.card-body --> </div> <!-- /.card --> </div> </section>
Y a-t-il quelque chose que je dois ajouter, modifier ou changer ? Merci
Vous essayez d'imprimer un tableau sous forme de chaîne. Votre relation pekerjaan() a la propriété hasmany et renvoie un tableau. Si vous souhaitez afficher tous les paramètres, vous devez exécuter une deuxième boucle à l'intérieur de la boucle. Si vous n'avez besoin d'en afficher qu'un seul, vous pouvez simplement le faire
Pour afficher tous les travaux, vous pouvez effectuer une boucle sur $provider->jobs comme :
Et changez $provider =provider::all(); sur votre contrôleur $provider = Provider::all();