Laravel 拉雷维尔雄辩的勇气产生了错误的数据

Laravel 拉雷维尔雄辩的勇气产生了错误的数据,laravel,eloquent,Laravel,Eloquent,尝试使用Pulk在date创建_ $campaigns_dates = CampaignHistory::where('status', "Complete")->orderBy( 'created_at', 'ASC' )->pluck('created_at'); $campaigns_dates = json_decode( $campaigns_dates ); return $campaigns_dates

尝试使用Pulk在date创建_

        $campaigns_dates = CampaignHistory::where('status', "Complete")->orderBy( 'created_at', 'ASC' )->pluck('created_at');
        $campaigns_dates = json_decode( $campaigns_dates );
        return $campaigns_dates;
//明白了吗

["2020-06-29T14:19:03.000000Z","2020-06-29T14:19:42.000000Z","2020-07-29T14:23:54.000000Z","2020-08-28T14:55:53.000000Z","2020-08-29T14:17:40.000000Z","2020-09-29T14:18:27.000000Z","2020-09-29T14:21:13.000000Z"]
//但是你想要这个吗

Example: ["2020-06-29 14:19:03","2020-06-29 14:19:42"]

您的日期结构与存储在DB中的日期结构相同。 要更改id,请使用
casts
内部
activityhistory
模型:


或者您可以在循环中使用函数
format

您可以使用映射操作将日期重新格式化为给定格式:

public function index() {
 
    $campaigns_dates = CampaignHistory::orderBy('created_at', 'ASC')
        ->pluck('created_at')
        ->map
        ->format('Y-m-d H:i:s');

    $campaigns_dates = json_decode($campaigns_dates);
    return $campaigns_dates;
}
替代解决方案:有一个具有
selectRaw()
方法的替代解决方案,感谢您提供此解决方案:

public function index() {
 
    $campaigns_dates = CampaignHistory::orderBy('created_at', 'ASC')
        ->selectRaw("DATE_FORMAT(created_at, '%Y-%m-%d %H:%i:%s') as formatted_date")
        ->pluck('formatted_date');

    $campaigns_dates = json_decode($campaigns_dates);
    return $campaigns_dates;
}

你也可以使用一个访问器,在你的模型中,你只需要把这个

public function getCreatedAtAttribute($value)
{
     return Carbon::parse($value)->format('Y-m-d H:i:s') //or what format you need
}

从您链接的文档“当模型序列化为数组或JSON时将使用此格式”中,他们必须将其模型序列化为数组,然后提取字段以使用此格式无需担心。。。您可以使用您拥有的功能,但他们必须将模型序列化为数组,然后从arrayside中提取这些字段注意:使用collection提供的高阶函数,如果需要,您可以删除匿名函数:
$campaigns\u dates->map->format(..)
(仅供参考)@lagbox谢谢你,我真的从你的评论和回答中得到了帮助。我可能还建议:选择raw(“日期格式(
created\u at
,“%Y-%m-%d%H:%I:%s”)作为格式化日期”)->pulk(“格式化日期”),如果你想进一步流式处理它,只需返回整个语句(这是一个集合,它将为您转换为JSON)但现在我们只是为了它而玩一小段代码
:-}
public function getCreatedAtAttribute($value)
{
     return Carbon::parse($value)->format('Y-m-d H:i:s') //or what format you need
}