Laravel Eloquent Pluck produced incorrect data

余生颓废 提交于 2021-02-08 04:10:55

问题


Trying to get created_at date using pluck.

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

//Getting This

["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"]

//But Want This

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

回答1:


You can use the map operation to reformat your date as your given 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;
}

Alternative Solution : There is an alternative solution with selectRaw() method, thanks to @OMR for provide this solution :

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;
}



回答2:


You've got the same date structure as you store in DB. To change id use casts inside CampaignHistory model: https://laravel.com/docs/8.x/eloquent-mutators#date-casting

protected $casts = [
    'created_at' => 'datetime:Y-m-d H:i:s',
];

or you can use function format in the loop.




回答3:


you can also use an accessor for that ..For that in your model, you have to just put this

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


来源:https://stackoverflow.com/questions/64140574/laravel-eloquent-pluck-produced-incorrect-data

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!