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

Laravel视图中按created_at排序展示每个candidat最新candidature全量数据的实现方法

实现方案

步骤1:修改Candidat模型,新增最新申请关联

在Candidat模型里新增latestCandidature一对一关联,直接绑定每个候选人的最新一条申请数据:

// Candidat.php 新增方法
public function latestCandidature()
{
    // 默认按created_at倒序取最新,如果你是按date_depot作为提交时间,就改成->latest('date_depot')
    return $this->hasOne(Candidature::class)
        ->latest()
        ->whereNotIn('etat', ['Archivé', 'Refusé']); // 直接在关联里过滤状态,后续不用重复判断
}

步骤2:修改控制器index方法,预加载最新关联

替换原有join写法,用with预加载关联避免N+1性能问题:

public function index()
{
    $candidat = Candidat::with('latestCandidature')
        ->where('deleted','false')
        // 筛选出至少有一条符合状态申请的候选人,不需要可以删掉这行
        ->whereHas('latestCandidature')
        ->get();

    return view('candidat.liste', compact('candidat'));
}

步骤3:修改liste.blade.php视图,直接调用最新关联

删掉原有candidatures循环,直接取latestCandidature的字段即可,增加非空判断避免报错:

@foreach($candidat as $key => $data)
    <tr>
        <th>{{ $data->id }}</th>
        <!-- 其他候选人字段保留 -->
        @if($data->latestCandidature)
            <td>{{ $data->latestCandidature->demande  }}</td>
            <td>{{ $data->latestCandidature->date_depot }}</td>
            <td>{{ $data->latestCandidature->etat }}</td>
        @else
            <!-- 无有效申请时的占位,不需要可以删掉 -->
            <td colspan="3">无有效申请</td>
        @endif
    </tr>
@endforeach

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

相关产品推荐
方舟 Agent Plan

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

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