2017-01-20 9 views
0

私のコントローラには次のコードがあります。私は2つの日付の差を求めて、 nは私がこれまで持っているもので2つの日付の差を見つけて結果をデータベースに保存する

class LeaveController extends Controller 
{ 
    public function ApplyLeave(Request $request){ 

     $days = $request->datepicker->diff($request->datepicker1); 

    Auth::user()->sent()->create([ 
     'tel'  => $request->tel, 
     'email' => $request->email, 
     'start' => Carbon::parse($request->datepicker), 
     'end' => Carbon::parse($request->datepicker1), 
     'supervisor' => $request->supervisor, 
     'department' => $request->department, 
     'name' => $request->name, 
     'adress' => $request->adress, 
     'days' => $days, 
    ]); 

    return view('home'); 
} 

...それをデータベースに保存し、私は次のエラーを取得する:

Call to a member function diff() on string

これについて行くにはどのように?

+0

$ request-> datepickerにある文字列は何ですか? –

答えて

1

あなたが必要に:あなたが必要

$d1 = new Carbon($request->datepicker); 
$d2 = new Carbon($request->datepicker1); 
$days = $d1->diff($d2)->days; 

注 - >日は、実際の日量を取得します。

時間に問題があることに注意してください。 2つの日付の間の日数を取得するには、> setTime(0,0,0)を使用することをお勧めします。

フォーマットが標準ではないことに注意してください。この場合は、

$format = 'm\d\Y'; 
$d1 = Carbon::createFromFormat($request->datepicker,$format); 
$d2 = Carbon::createFromFormat($request->datepicker1,$format); 
$days = $d1->diff($d2)->days; 
+0

ありがとうございます。それはとてもうまくいった –

1

Manを使用してください。基本的なPHP関数が最良のソリューションを提供できる場合は、Carbonを使用しないでください。使用OOP:

$datetime1 = new DateTime($request->datepicker); 
$datetime2 = new DateTime($request->datepicker1); 
$interval= $datetime1->diff($datetime2); 
$days = $interval->format('%a'); 

あなたがそのあなたがパラメータとしてDateオブジェクトを受け取り、あなたはプレーンな文字列を提供しているdiff()機能を使用しているため、そのエラーを取得しているなぜあなたは興味があれば。

+0

ありがとう。それは –

+0

問題は機能しませんでした。ハッピーコーディング! – Learner

関連する問題