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

如何在Laravel中获取数据表created_at列的年份值

实现方案

你当前使用的是Laravel Eloquent查询,可以选择以下两种常用方案实现需求:

方案1:直接在查询语句中提取年份(推荐,性能更高)

使用DB::raw()调用数据库的年份提取函数,直接在查询阶段就拿到格式化后的年份值,修改你的查询代码如下:

// 顶部记得引入DB门面
use Illuminate\Support\Facades\DB;

$driversInformation = DriverInformation::all([
    'user_id','driver_fname','driver_mname','driver_lname',
    'driver_birthday','years_driving_experience','years_driving_experience_quicktrans','start_year_of_exp_in_driving',
    'start_year_of_exp_in_driving_in_quicktrans','educational_attainment','health_status','drug_test','marital_status',
    'salary_level As Salary_range','license_registration','license_expiration','license_condition','medication_maintenance',
    'training','driver_height','driver_weight','weight_status','emergency_contact_number','home_address_street_number',
    'home_address_street','home_address_brgy','home_address_city','work_hours_range','work_shift','sleep_hours_range','smoker',
    DB::raw('YEAR(created_at) as created_at')
]);

如果你的数据库是PostgreSQL,把YEAR(created_at)替换成EXTRACT(YEAR FROM created_at)即可。

方案2:通过模型属性处理

如果你的DriverInformation模型默认已经把created_at加入了日期字段(Laravel默认配置就是如此),也可以在查询后通过Carbon方法转年份,如果你需要同时保留完整的created_at值又要年份字段可以用这个方法:

  1. 先在DriverInformation模型中添加访问器:
// 写在DriverInformation模型类里
public function getCreatedYearAttribute()
{
    return $this->created_at->format('Y');
}
  1. 然后查询的时候把这个字段追加到返回结果中即可:
$driversInformation = DriverInformation::all([
    // 原有其他字段不变
    'created_at'
])->append('created_year');

两种方案都可以实现你要的created_at:"2021"效果,方案1不需要额外处理模型,性能更好更直接,优先选即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:04