DateTime :: __ construct()期望参数1为字符串,给定对象

时间:2019-03-28 07:37:22

标签: php laravel eloquent datetimepicker difference

我正在尝试计算两个日期。当我放置

$from = Carbon::createFromFormat('m-d-Y H:i:s', '02-10-2017 10:02:20');

代码我获得了价值,但是当我从mysql放置数据时

$from = Carbon::createFromFormat('m-d-Y H:i:s', $from_date); 

找不到数据,也无法计算日期和日期

Controller.php

public function circulerMatchView()
    {
        $user_id = Auth::user()->id;

        $resume_exp = Experience::select('user_exp_keyword')
                    ->where('user_id','=',$user_id)
                    ->get();
        $from_date = Experience::selectRaw('exp_from_date')
                    ->where('user_id','=',$user_id)
                    ->orderBy('exp_from_date','desc')
                    ->take(1)
                    ->get();
        $to_date = Experience::selectRaw('exp_to_date')
                    ->where('user_id','=',$user_id)
                    ->orderBy('exp_from_date','desc')
                    ->take(1)
                    ->get();

             $from = DateTime::createFromFormat('m-d-Y H:i:s', $from_date);
             $to = Carbon::createFromFormat('m-d-Y H:i:s', $to_date);
            $realAge = Carbon::parse($to)->diff(Carbon::parse($from))->format('%y');   
            print_r($realAge);
}

如果$from_date是2017年2月21日,而$to_date是2018年2月21日

结果是1年

1 个答案:

答案 0 :(得分:0)

您正在使用get来获取数组。用您的代码替换这两行并检查。它将仅获取字段数据值。

$from_date = Experience::
                    where('user_id','=',$user_id)
                    ->orderBy('exp_from_date','desc')
                    ->take(1)
                    ->pluck('exp_from_date')[0];
$to_date = Experience::
                where('user_id','=',$user_id)
                ->orderBy('exp_to_date','desc')
                ->take(1)
                ->pluck('exp_to_date')[0];

再次检查此documentation以获得有关pluck的详细信息。