2016-05-09 36 views
0

ich eine Datepicker-Plugin haben eine Kalenderansicht, um Pop-up-Benutzer zu ermöglichen, ein Datum + Uhrzeit auszuwählen, aber das Format, das es produziert, ist:Validate Datum und Uhrzeit im Laravel Modell

May 9, 2016 8:30 AM 

Bei der Lagerung auf die Datenbank, ich das Format sein müssen:

2016-09-05 08:30:00 

im Modell meiner Anwendung, die ich habe:

public function save(Request $request) 
{ 
    Entry::create($request->all()); 
    return redirect('entries'); 
} 

Das speichert die Formulareingabe des Benutzers, jedoch speichert es die Datetime aufgrund des falschen Formats nicht. Ich habe versucht, eine neue Funktion zu erstellen, um das Datum zu formatieren, bevor es in die Datenbank eingegeben wird.

Wenn ich jedoch die Funktion aus der Speicherfunktion aufrufen, heißt es undefinierte Funktion. Mache ich etwas falsch oder was wäre der richtige Weg, dies zu erreichen? (Entschuldigung, ich bin noch neu - danke).

+0

$ zurückgebenDatum = DateTime :: createFromFormat ('Y-d-m G: i: s', $ Daten); hier $ returnDate gibt false.so zurück –

Antwort

2

Sie müssen das korrekte Format für DateTime::createFromFormat() einstellen. Aus Format erstellen bedeutet, dass Sie ein Muster angeben müssen, das mit allen Informationen des angegebenen Datums übereinstimmt. Für Ihr Datum ist das Muster: https://eval.in/567629

Eine Liste aller Formatoptionen:

DateTime::createFromFormat('F j, Y g:i A', $data); 

Hier eine Demo http://php.net/manual/en/function.date.php

1

Beide Funktionen innerhalb des Modells sind? Wenn ja, wie möchten Sie die Funktion formatDate aufrufen?

Sie könnten eine anonyme Funktion stattdessen versuchen verwenden:

$formatted_date = function() use ($data) { $returnDate = DateTime::createFromFormat('Y-d-m G:i:s', $data); return $returnDate->format('Y-d-m G:i:s'); };

In Ihrem Controller oder Modell.

+0

Beide Funktionen sind im selben Modell. Ich habe versucht, das formatDate in der 'save' -Funktion aufzurufen, aber es gibt die Funktion undefined an, so dass mein oben angegebener Code es nicht enthält, ich versuche immer noch, damit zu experimentieren. Danke für Ihre Antwort. – AUllah1

0

In Laravel, die created_at und updated_at Carbon gegossen werden Objekte

https://laravel.com/docs/5.2/eloquent-mutators#date-mutators

mit Ihrem Datum, Sie das gleiche tun könnten

class User extends Model { /** * The attributes that should be mutated to dates. * * @var array */ protected $dates = ['created_at', 'updated_at', 'your_date']; }

dann, wenn das Datum Speicher Es wird in das richtige Format umgewandelt.

Probieren Sie es aus und lassen Sie uns wissen, wie es Ihnen geht!

0

Zum Beispiel;

$data = "May 9, 2016 8:30 AM"; 

return date('Y-d-m H:i:s',strtotime($data));