如何在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值又要年份字段可以用这个方法:
- 先在
DriverInformation模型中添加访问器:
// 写在DriverInformation模型类里 public function getCreatedYearAttribute() { return $this->created_at->format('Y'); }
- 然后查询的时候把这个字段追加到返回结果中即可:
$driversInformation = DriverInformation::all([ // 原有其他字段不变 'created_at' ])->append('created_year');
两种方案都可以实现你要的created_at:"2021"效果,方案1不需要额外处理模型,性能更好更直接,优先选即可。
内容的提问来源于stack exchange,提问作者carlbarzon
相关产品推荐
相关产品推荐

