You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中通过Eloquent按名称匹配查询一对多关联表数据

术语对应关系

开始前先明确代码中印尼语术语与中文的对应:

  • Penyedia = 供应商(Vendor)
  • Pekerjaan = 工程(Work)
现有环境说明

当前有两张数据表,为一对多关联关系:单个供应商可拥有多个工程,单个工程仅归属一个供应商。

  • 供应商表(Vendor Table)结构:
    供应商表结构
  • 工程表(Work Table)结构:
    工程表结构

项目基于Laravel框架开发,已在供应商列表页添加操作按钮,需要实现点击按钮后展示对应名称供应商名下工程列表的功能。目前已在工程表中添加存储供应商名称的nama字段,因刚接触Laravel的Eloquent ORM,不清楚具体实现逻辑。

已编写代码

工程模型 Pekerjaan.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');
   }

}

供应商模型 Penyedia.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

该文件为工程列表展示页,需要实现按供应商筛选展示对应工程列表的效果,当前代码如下:

<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>
待解决问题

现有代码需要新增、修改或调整哪些内容,才能实现点击按钮展示对应供应商名下工程列表的需求?


内容的提问来源于stack exchange,提问作者YuPi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:54:37