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
相关产品推荐
相关产品推荐

