如何在不使用toArray或toJson的情况下获取已转换格式的日期?
无需转换整个模型获取Laravel格式化日期的方法
在Laravel中,当你通过$casts配置了日期格式,但直接取字段或转字符串得不到预期格式时,可以用以下几种简便方法:
1. 调用模型的getAttributeValue方法
这个方法会触发字段的转换逻辑,直接返回casts中配置的格式化字符串:
dd($model->getAttributeValue('deadline')); // "17/12/2022"
2. 利用Carbon实例的format方法手动格式化
直接获取字段得到的是Carbon实例,你可以直接调用它的format方法,指定和casts一致的格式:
dd($model->deadline->format('d/m/Y')); // "17/12/2022"
如果字段可能为null,可以用可选链式调用避免报错:
dd($model->deadline?->format('d/m/Y'));
3. 为模型添加访问器
如果需要频繁使用格式化后的日期,给模型定义访问器会更直观:
// 在你的模型类中 public function getFormattedDeadlineAttribute() { return $this->deadline?->format('d/m/Y'); }
之后直接通过属性调用即可:
dd($model->formatted_deadline); // "17/12/2022"
4. 转换单个字段而非整个模型
用only方法只转换目标字段,不用处理整个模型:
dd($model->only('deadline')['deadline']); // "17/12/2022"
内容的提问来源于stack exchange,提问作者amir
相关产品推荐
相关产品推荐

