Heim  >  Fragen und Antworten  >  Hauptteil

Holen Sie sich Daten aus einer anderen Tabelle, die mit dem Namen Laravel übereinstimmt

Bevor ich anfange, einige Übersetzungen, da mein Code nicht auf Englisch ist:

Anbieter = Lieferant

Arbeit=Arbeit

Ich habe also zwei Tabellen, Lieferantentabelle und Arbeitsblatt. Jeder Lieferant kann mehrere Werke besitzen und jedes Werk kann nur einem Lieferanten gehören. Es sollte eine Eins-zu-Viele-Beziehung sein. Das ist mein Tisch

Lieferantenliste

Werkbank

Also verwende ich LARAVEL als mein Framework. Ich habe eine Anbietertabelle mit einer Aktionsschaltfläche erstellt und möchte, dass sie funktioniert. Wenn auf die Schaltfläche geklickt wird, wird eine Liste der Jobs (Pekerjaan) angezeigt, die dem genauen Anbieternamen gehören. Wie Sie der Tabelle oben entnehmen können, habe ich den Namen des Anbieters (nama) zu einem „Blatt“ in der Datenbank hinzugefügt. Wie kann ich diese Funktion nutzen? Ich bin neu bei Eloquent in Laravel.

Das ist meine Modelldatei:

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 (Ich möchte dieses Blatt basierend auf dem Lieferanten anzeigen)

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

Muss ich etwas hinzufügen, bearbeiten oder ändern? Danke

P粉378264633P粉378264633287 Tage vor390

Antworte allen(1)Ich werde antworten

  • P粉710478990

    P粉7104789902024-01-30 00:47:00

    您正在尝试将数组打印为字符串。您的 pekerjaan() 关系具有 hasmany 属性,并且它返回数组。如果您想显示所有pekerjaan,则需要在循环内运行第二个循环。如果你只需要显示一个,你可以简单地这样做

    {{$penyedias->pekerjaan[0]->pekerjaan}}

    要显示所有职位,您可以在 $provider->jobs 上循环,例如:

    @php $no = 1; @endphp
                      @foreach ($penyedia as $penyedias) 
                       @foreach($penyedias->pekerjaan as $pekerjaan)
                      
                        {{$no++}}
                        {{$pekerjaan->pekerjaan}}
                        {{$penyedias->nama}}
                        {{$pekerjaan->lokasi}}
                        Rp. {{number_format($pekerjaan->hps,0,',',',')}}
                        Rp. {{number_format($pekerjaan->nilai_kontrak,0,',',',')}}
                        
                            Edit
                        
                      
                       @endforeach
                      @endforeach

    并更改 $provider =provider::all();在您的控制器上 $provider = Provider::all();

    Antwort
    0
  • StornierenAntwort