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

Laravel中如何从数据库获取去重日期并仅显示日期部分?

Laravel GPS追踪历史:每日最新条目获取与日期格式化方案

问题背景

基于Laravel Jetstream + Inertia.js开发车辆GPS追踪系统,包含Fleet(车辆)、Tracker(追踪器)、History(位置历史)三个模型。当前实现可展示特定车辆的所有追踪日期,但存在两个问题:

  • 单日期存在多条重复条目,需仅保留每日最新的一条记录
  • 时间戳显示完整格式(如2022-08-18 09:21:06),希望仅展示日期部分(如2022-08-18)

解决方案

1. 修改HistoryController查询逻辑

通过子查询获取每日最新记录,并生成格式化日期字段:

class HistoryController extends Controller
{
    public function index(Request $request)
    {
        $fleet = Fleet::findOrFail($request->id);
        $imei = $fleet->tracker->value('imei');

        // 子查询:按日期分组,获取每个日期的最新记录时间
        $latestDailyRecords = DB::table('history')
            ->select(DB::raw('DATE(created_at) as date, MAX(created_at) as latest_created_at, imei'))
            ->where('imei', $imei)
            ->groupBy(DB::raw('DATE(created_at)'), 'imei');

        // 关联原表,获取每日最新的完整记录,并生成格式化日期
        $history = DB::table('history')
            ->joinSub($latestDailyRecords, 'daily_latest', function ($join) {
                $join->on('history.created_at', '=', 'daily_latest.latest_created_at')
                     ->on('history.imei', '=', 'daily_latest.imei');
            })
            ->select('history.*', DB::raw('DATE(history.created_at) as formatted_date'))
            ->get();

        return Inertia::render('FleetView', [
            'fleet' => $fleet,
            'history' => $history
        ]);
    }
}

2. 修正History模型关联关系

原模型中tracker()关联逻辑错误,History属于Tracker,应改为belongsTo并指定关联字段:

class History extends Model
{
    use HasFactory;

    protected $table = 'history';

    protected $fillable = [
        'id', 'imei', 'lat', 'lng', 'speed', 'msg_type', 'time',  'date', 'unknown_char', 'created_at', 'payload'
    ];

    public function tracker()
    {
        // 指定关联字段:History的imei对应Tracker的imei
        return $this->belongsTo(Tracker::class, 'imei', 'imei');
    }
}

3. 前端使用格式化日期

在Inertia的FleetView组件中,直接调用formatted_date字段展示日期,替代完整的created_at时间戳。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:20:28