laravel - Laravel 突变器和访问器
问题描述
我在模型中创建了 mutator date 函数,以使用diffForHumans()将 created_at 日期转换为人类可读的时间。我做了以下
public function setDateAttribute($value){
return \Carbon\Carbon::parse($value)->diffForHumans();
}
它工作正常,但它影响所有。可以仅在控制器的指定功能上应用此 mutator,而不是所有功能
解决方案
突变器中的一个小逻辑可以完成这项工作:-
public function setDateAttribute($value){
if ( request()->path() === "/yourURL/To/IndexMethod"){
return $this->attributes['date'] = \Carbon\Carbon::parse($value)->diffForHumans();
} else {
return $this->attributes['date'] = $value;
}
}
这个想法是通过 url 检查。
编辑
使用路由名称进行比较更好,因为确切的路径可以包含 id/slugs。
public function setDateAttribute($value){
if ( \Route::currentRouteName() === "/yourRouteName/To/IndexMethod"){
return $this->attributes['date'] = \Carbon\Carbon::parse($value)->diffForHumans();
} else {
return $this->attributes['date'] = $value;
}
}
推荐阅读
- angular - Angular 7 仅导出 Angular 材料 6 的分页数据表的可见行,而不是使用 xlsx 库导出整个数组
- r - R编程:如何将转义序列“\ store”存储在变量中
- c# - Web 请求的 AsyncLazy 实现
- ios - 测试核心蓝牙
- reactjs - React 子类型中的默认道具值
- leveldb - 为什么leveldb的bloomfilter的位数组需要分割成很多filterblock?
- openlayers - 带有地图框图层缩放问题的 OpenLayers5
- ionic-framework - 多键离子过滤JSON文件数据
- android - 如何管理 manifestProduct 风味的清单文件和包名
- mysql - 如何对共享相同值的行组中某些值的出现进行求和和计数