2015-08-26 2 views
6

Ich habe eine Timestamp Variable Spalte in einer MySQL-Datenbank. Ich versuche, einen Kohlenstoff-Zeitstempel in etwas zu konvertieren, das ich dort eingeben kann, aber Carbon::now() gibt nur ein Carbon-Objekt zurück, und wenn ich versuche, den Timestamp-String des Carbon-Objekts zu verwenden, wird es nicht in mysql registriert.Konvertieren eines Kohlenstoffdatums in den Zeitstempel von mysql.

public function store(CreateArticleRequest $request){ 
     $input = $request->all(); 
     var_dump($input); // JUST SO YOU CAN SEE 
     $input['published_at'] = Carbon::now(); 
     var_dump($input); // JUST SO YOU CAN SEE 
     Article::create($input); 
} 

Meine erste var Dump ist etwa so:

array (size=4) 
    '_token' => string 'Wy67a4hWxrnfiGz61wmXfYCSjAdldv26wOJiLWNc' (length=40) 
    'title' => string 'ASDFasdf' (length=8) 
    'body' => string 'asdfasdf' (length=8) 
    'published_at' => string '2015-08-26' (length=10) 

Meine zweite var Dump ist wie so.

Die mysql-Spalte, die sich auf "published_at" bezieht, ist eine Timestamp-Variable. Wie soll ich das aus einem Carbon-Objekt machen?

Vielen Dank im Voraus.

+0

Verwenden Sie 'strtotime' am Datum. – mdamia

Antwort

-4

können Sie legen auch Mutator auf Ihrem Modell.

public function setPublishedAt($value) 
{ 
    $this->attributes['published_at'] = strtotime($value); 
} 

zu konvertieren

$model -> setPublishedAt('2015-08-26'); // 1440572400 

oder Sie konvertieren zeitzustempeln nur das Datum strtotime

strtotime mit zeitzustempeln - Analysiert jede in englischer Textdatetime Beschreibung in einen Unix-Zeitstempel

Hoffe diese Hilfe.

+0

Das ist kein MySQL-Zeitstempel, das ist ein UNIX-Zeitstempel – AndrewMcLagan

3

Das Problem ist in der Datumszeichenfolge, zum Beispiel, Sie haben diese:

public function setCrbDateAttribute($value) 
{ 
    $this->attributes['crb_date'] = \Carbon\Carbon::createFromFormat('d-m-Y h:i', $value); 
} 

Nun, wenn es ein Datum wie 2014.10.12 ist dann dieser Fehler auftreten wird, weil die Stunde und Minute fehlt. So stellen Sie sicher, dass das Datum alle Pars enthält und stellen Sie außerdem sicher, dass die Datumszeichenfolge - als Trennzeichen nicht/enthält.

Mit anderen Worten, überprüfen Sie den $ -Wert, bevor Sie Carbon verwenden, und stellen Sie sicher, dass Ihre Datumszeichenfolge genau dieselbe formatierte Zeichenfolge enthält, die Sie in der Methode verwendet haben.

Dies geschieht auch in einem Accessormethode, so überprüfen Sie das Datum Wert zuerst, bevor Sie es verwenden, in Carbon::createFromFormat().

Wenn Sie das Datum aus Benutzereingaben werden immer dann das Datum überprüfen, bevor es mit Datum oder date_format mit: Format Regel, überprüfen Sie die Validierung hier.

Antwort ref:

Laravel/Carbon Timestamp 0000-00-00 00:00:00 or Unexpected data found. Unexpected data found. Data missing

Verwandte Themen