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

Laravel排班申请系统查看按钮始终跳转同一ID93如何解决

问题根因

你在控制器中只查询了当前用户第一条申请记录对应的排班数据,模板循环时所有查看链接用的都是这个固定的排班ID,所以点击任意记录都跳转到ID为93的页面。
你之前把查询改成get()报错,是因为get()返回的是模型集合,不能直接取id属性。

修复步骤

1. 先给申请模型加关联

在Solicitudes模型文件中添加和排班(Eventos)的一对一关联:

// app/Models/Solicitudes.php 路径根据你项目实际情况调整
public function evento()
{
    return $this->hasOne(Eventos::class, 'solicitud_id');
}

2. 修改控制器查询逻辑

删掉原来单独查询单条申请、单条排班的冗余代码,查询申请列表时直接预加载关联的排班数据:

public function inicio() {
    if (Auth::guest()) {
      return redirect()->route("login");
    }

    $config = Configuraciones::findOrFail(0);

    // 查申请列表同时预加载关联的排班,避免N+1查询问题
    $solicitudes = Solicitudes::where('user_id', Auth::id())
        ->orderByDesc('created_at')
        ->take(5)
        ->with('evento')
        ->get();

    return view('solicitudes.inicio', compact('solicitudes', 'config'))->with($data);
}

3. 修改Blade模板的跳转链接

把原来固定用$eventos->id的地方,改成循环中当前申请对应的排班ID即可:

<!-- 原来的旧链接 -->
<!-- <a class="dropdown-item" href="/turno/{{ $eventos->id }}">查看</a> -->
<!-- 替换为下方代码 -->
<a class="dropdown-item" href="/turno/{{ optional($solicitud->evento)->id }}">查看</a>

这里加optional()是为了避免某条申请没有对应排班数据时页面报错,你也可以根据业务逻辑加判断,没有排班时隐藏查看按钮。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:57:02