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

Laravel审批系统点击同意按钮后如何按管理员ID显示审批通过状态

问题解决步骤

你需要从模型关联、控制器查询、Blade展示三个层面调整代码,具体修改如下:


1. 先确认模型关联配置

首先确保Pinjaman模型已经定义和审批表的关联,打开app/Models/Pinjaman.php添加如下方法:

// 关联审批表,一条借款对应一条审批记录
public function approve_admin()
{
    return $this->hasOne(ApproveAdmin::class, 'pinjaman_id', 'id');
}

同时确保ApproveAdmin模型也定义了和管理员表的关联,打开app/Models/ApproveAdmin.php添加:

// 关联管理员表,一条审批记录对应一个审批管理员
public function pengurus()
{
    return $this->belongsTo(Pengurus::class, 'pengurus_id', 'id');
}

2. 修改控制器查询逻辑

你原来的控制器里查单条借款用了get(),会返回集合而非单条数据,同时没有预加载关联导致状态判断不准,修改后的代码如下:

public function dataPinjamanDetail($id)
{
    // 直接用find查单条借款,预加载关联的审批数据,避免N+1查询
    $pinjaman = Pinjaman::with('approve_admin')->findOrFail($id);
    // 直接取当前登录用户关联的管理员数据,不需要额外查询
    $currentAdmin = auth()->user()->pengurus;
   
    return view('admin.dataPinjamanDetail', compact('pinjaman', 'currentAdmin'));
}

3. 调整Blade模板代码

你原来的模板有两处明显问题:一是单条数据还用了循环,二是状态判断只写了未审批的情况,三是借款备注字段写错成了工资字段,同时表单路径少了斜杠,修改后代码如下:

{{-- 现在是单条数据,不需要foreach循环 --}}
<div class="col-mb-5">Nama Peminjam : {{$pinjaman->anggota->nama}}</div><br>
<div class="col-mb-5">Besar Pinjaman: {{$pinjaman->besar_pinjam}}</div><br>
Gaji Bersih: {{$pinjaman->gaji_bersih}}<br>
Keterangan: {{$pinjaman->keterangan}}<br> {{-- 修复原来笔误重复写gaji_bersih的问题 --}}
Status Anda : 
@empty($pinjaman->approve_admin)
    <span class="badge rounded-pill bg-primary">Belum Ada Memilih</span>
@else
    <span class="badge rounded-pill bg-success">Disetujui oleh {{$pinjaman->approve_admin->pengurus->nama}}</span>
@endempty
<br>
<br>
{{-- 只有未审批的时候才展示同意按钮,避免重复提交 --}}
@empty($pinjaman->approve_admin)
<form method="post" action="{{ url('/updates-pinjamanUser/approve/'.$pinjaman->id) }}">      
    @csrf        
    <input type="hidden" name="pengurus_id" value="{{$currentAdmin->id}}">
    <input type="hidden" name="pinjaman_id" value="{{$pinjaman->id}}">
    <button type="submit" class="btn btn-success">Setuju</button>
</form>
@endempty

4. 确认审批提交接口逻辑

最后检查你处理审批提交的控制器方法,确保能正确写入审批表,示例逻辑如下:

public function handleApprove(Request $request, $pinjamanId)
{
    // 参数校验
    $request->validate([
        'pengurus_id' => 'required|exists:pengurus,id',
        'pinjaman_id' => 'required|exists:pinjaman,id',
    ]);

    // 写入审批记录
    ApproveAdmin::create($request->only(['pengurus_id', 'pinjaman_id']));

    // 跳转回详情页刷新状态
    return back()->with('msg', '审批成功');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:06