2017-01-20 1 views
0

Ich habe den folgenden Code in meinem Controller..Ich möchte den Unterschied zwischen zwei Daten (von und zu) finden, so dass ich die Anzahl der Tage dazwischen bekomme die speichern n in eine Datenbank ..Den Unterschied zwischen zwei Daten finden und das Ergebnis in einer Datenbank speichern

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

mit dem, was ich bisher, bekomme ich folgende Fehlermeldung:

Call to a member function diff() on string

Wie wäre es mit diesem gehen?

+0

Was ist die Zeichenfolge, die Sie in $ request-> datepicker haben? –

Antwort

1

Sie müssen:

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

Hinweis, die Sie benötigen -> Tage den tatsächlichen Tage Betrag zu erhalten.

Beachten Sie, dass Sie Probleme mit Zeiten haben werden. Vielleicht möchten Sie -> setTime (0,0,0), um die Tage zwischen 2 Daten zu bekommen.

Beachten Sie, dass Ihr Format möglicherweise nicht Standard ist. Verwenden Sie in diesem Fall:

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

danke. es hat so gut funktioniert –

1

Man, Verwenden Sie nicht Carbon, wenn grundlegende PHP-Funktionen Ihnen die beste Lösung bieten können. Verwenden OOP:

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

Wenn Sie neugierig sind, warum Sie diesen Fehler bekommen seine dann, weil Sie diff() Funktion verwenden, die Datumsobjekt als Parameter übernimmt und Sie einfacher String bereitstellen.

+0

danke bro. es funktionierte –

+0

Kein Problem. Glückliche Kodierung! – Learner

Verwandte Themen