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

Laravel基于dateOfEnrollment列查询入学超4年记录的实现方法

Laravel查询入学时长超过4年记录的实现方案

前置准备

如果你使用Eloquent ORM查询,需要先确保对应模型配置正确:

// app/Models/BasicInfo.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class BasicInfo extends Model
{
    // 显式指定关联数据表,避免Laravel默认匹配basic_infos表
    protected $table = 'basicinfo';

    // 配置日期字段自动序列化,Laravel 7+推荐用$casts
    protected $casts = [
        'dateOfEnrollment' => 'date',
    ];
}

实现方法

  • 方法1:查询构造器直接操作表
use Illuminate\Support\Facades\DB;

$enrollOver4Years = DB::table('basicinfo')
    ->whereRaw('dateOfEnrollment <= DATE_SUB(CURDATE(), INTERVAL 4 YEAR)')
    ->get();

该方法直接执行原生SQL条件,CURDATE()取数据库当前日期,减去4年的时间节点,只要入学日期早于等于该节点的记录都符合要求。

  • 方法2:Eloquent ORM + Carbon日期计算(推荐)
use App\Models\BasicInfo;
use Carbon\Carbon;

$enrollOver4Years = BasicInfo::whereDate('dateOfEnrollment', '<=', Carbon::now()->subYears(4))
    ->get();

该写法更符合Laravel开发规范,依赖Carbon做日期计算,自动适配Laravel配置的时区,跨数据库兼容性更好。

注意事项

请确保Laravel配置文件config/app.php中的timezone时区配置和你的数据库时区保持一致,避免日期计算出现偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:45:03