Laravel Eloquent Pluck 产生了错误的数据

N.T*_*Tec 2 laravel eloquent

尝试使用 pluck 获取 created_at 日期。

        $campaigns_dates = CampaignHistory::where('status', "Complete")->orderBy( 'created_at', 'ASC' )->pluck('created_at');
        $campaigns_dates = json_decode( $campaigns_dates );
        return $campaigns_dates;
Run Code Online (Sandbox Code Playgroud)

//得到这个

["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"]
Run Code Online (Sandbox Code Playgroud)

//但是想要这个

Example: ["2020-06-29 14:19:03","2020-06-29 14:19:42"]
Run Code Online (Sandbox Code Playgroud)

sta*_*sta 5

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

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;
}
Run Code Online (Sandbox Code Playgroud)

替代解决方案:有一个替代解决方案的selectRaw()方法,感谢@OMR提供此解决方案:

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 旁注:使用集合提供的高阶函数,如果您愿意,您可以删除匿名函数:`$campaigns_dates->map->format(....);`(仅供参考) (2认同)
  • @lagbox 谢谢你,我真的从你的评论和回答中得到了帮助 (2认同)