Ich möchte eine Eingabe haben, in der Sie eine Zeit im EU-Format wie 12:00 oder 21:34 eingeben. (hh: mm) Wie mache ich das?

Schema::create('posts', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->string('arena');
    $table->date("h,i"('beginn'));
    $table->timestamps();
});

Das habe ich, aber es ist offensichtlich falsch.

10
Jonas 19 Apr. 2018 im 19:17

4 Antworten

Beste Antwort

In Laravel 5.6 haben Sie diese neue Funktion, mit der Sie Ihren Zeitstempel umwandeln können, sodass Ihre Migration so aussehen sollte

Schema::create('posts', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->string('arena');
    $table->timestamp("begin");
    $table->timestamps();
});

Und in Ihrem Post Modell können Sie dies einfach tun:

protected $casts = [
    'begin' => 'date:hh:mm'
];

Bearbeiten
Wenn Sie Laravel 5.6 NICHT verwenden, können Sie Accessors & Mutators um Daten beim Einstellen in der Datenbank oder beim Abrufen aus der Datenbank einfach zu bearbeiten, damit Sie so etwas tun können

public function getBeginAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('hh:mm');
}

Und jedes Mal, wenn Sie es in Ihrem Blade oder wo immer so wiedergeben {{ $post->begin }}, ändert es automatisch das Format für Sie.

Ich hoffe, das hilft.

3
AH.Pooladvand 19 Apr. 2018 im 17:19

Sie können dies mit Carbon tun, das standardmäßig in Laravel enthalten ist:

  1. Setze eine Variable mit der aktuellen Zeit $date = Carbon::now()
  2. Stellen Sie die Stunde ein, zum Beispiel 22 $date->hour = 22
  3. Stellen Sie Minuten ein, zum Beispiel 54 $date->minutes = 54
  4. Zum Schluss setzen Sie $table->date($date)
2
Melvin Hagberg 19 Apr. 2018 im 16:27

Da die Laravel-Migration auf der traditionellen SQL-Konvention basiert, können Sie das Format nicht mithilfe der Migration ändern. Dies liegt daran, dass SQL datetime selbst als JJJJ-MM-TT HH: MM: SS formatiert ist. Sie können jedoch das Carbon-Datums- / Uhrzeitformat verwenden, um das gespeicherte Datum, die gespeicherte Uhrzeit oder beides nach Ihren Wünschen anzuzeigen. Weitere Informationen zu Carbon finden Sie unter diesem Link . Offizieller Link hier

0
Saurav 19 Apr. 2018 im 16:28

Sie können $table->times('field_name'); verwenden

Schema::create('posts', function (Blueprint $table) {
   $table->increments('id');
   $table->string('title');
   $table->string('arena');
   $table->times("begin");
   $table->timestamps();
});
0
Jignesh Joisar 12 Mai 2020 im 11:55