$rankArray = [
'ranks' => $product[0]['productSalesRank']->pluck('rank'),
'dates' => $product[0]['productSalesRank']->pluck('created_at')
];
$rankArray['dates']->transform(function ($item) {
return $item->format('d-m-Y');
});
每次从数据库中检索created_at / updated_at日期时必须进行转换似乎效率低下,是否有更简单的方法来执行此操作?
我想将日期保留为Carbon,但在某些情况下,只需要“值”
答案 0 :(得分:2)
在productSalesRank的模型(?)中设置一个getter,它可以完成准备日期的所有工作。
型号:
class ProductSalesRank extends Model
{
protected $dates = ['created_at', 'updated_at'];
// whatever other columns you want to use Carbon on ^.
public function getCreatedAtHumanAttribute() {
return $this->created_at->format('d-m-Y');
}
}
查看/控制器/只要:
$productSalesRank->created_at_human; // will print it like you defined it in the model.
为什么_human?
有时候在代码的后面你会发现自己需要在created_at值上使用Carbon功能。当你使用format()时,它会返回一个从Carbon特征中删除的字符串。
[更新]
早些时候我们创建了一个getter / accessor。据我所知,你不能传递像:
这样的变量 ->created_at_human('mm')
因为它不是方法,所以它是一个访问者。
在您的模型中,创建一个函数。
public function myFunction($format) {
return $this->created_at->format($format);
}
在您看来,简单:
$productSalesRank->myFunction('d-m-Y');
答案 1 :(得分:0)
您可以为模型添加一个访问者,自动将数据转换为所需的格式。更多关于:https://laravel.com/docs/5.2/eloquent-mutators#accessors-and-mutators
答案 2 :(得分:0)
在表格相关模型中,
class ModelName{
//add this line
protected $dates = ['created_at','updated_at'];
}
在模型中定义$dates
会自动为您提供日期的碳实例。