2017-05-22 5 views
0

私は思ったよりも多くの問題を引き起こしている比較的単純な問題であるように思えます。ご存知のように、HTML5はフォームフィールドの「datetime」入力をサポートしなくなり、「datetime-local」のみをサポートします。私のウェブサイト上のフォームを介して "datetime-local"をデータベースに挿入しようとすると、 "datetime-local"に余分な文字が含まれているので、私は明らかにエラーになります。私が何をしようとしているのか、それぞれのフィールドで日時だけではなく日時フィールドが必要な理由は、Carbonを使用して日時をさまざまな形式で表示したいからです。私のデータベースに手動で値を挿入することなく、HTMLフォームからdatetimeをmysqlテーブルに挿入するにはどうすればよいですか?HTMLフォームを使用してdatetimeをMYSQLデータベースに正しく挿入する方法は?

編集: これは私がこれを達成しようとしているすべての関連するコードです。

<select name="season_id"> 

     @foreach ($seasons as $season) 

     <option name="season_id" value="{{ $season->id }}">{{ $season->season }} {{ $season->year }}</option> 

     @endforeach 

</select> 

<label for="inputDateTime" class="sr-only">DateTime</label> 
    <input type="datetime-local" name="gdatetime" id="inputDateTime" class="form-control" placeholder="DateTime" required autofocus> 

<label for="inputOpponent" class="sr-only">Opponent</label> 
    <input type="text" name="opponent" id="inputOpponent" class="form-control" placeholder="Opponent" required autofocus> 

<label for="inputLocation" class="sr-only">Location</label> 
    <input type="text" name="location" id="inputLocation" class="form-control" placeholder="Location" required autofocus> 

<label for="inputField" class="sr-only">Field</label> 
    <input type="text" name="field" id="inputField" class="form-control" placeholder="Field" required autofocus> 

ゲームコントローラ:私は、このアプリケーションに

ゲームを構築するためにLaravelを使用しています/フォームを作成

protected $dates = ['gdatetime']; 

$game = Game::create(request(['gdatetime', 'opponent', 'location', 'field', 'season_id'])); 

また、私のGameモデルでは、私はこれを定義しています

+0

これはユーザーの入力時刻ですか、それとも記録保持のためのものですか? – GrumpyCrouton

+0

これはユーザー入力日時です@GrumpyCrouton – hoolakoola

答えて

1

を返すようにdate()を引き起こしてfalseを返すことがありカーボンインスタンスに送信し、データベースに格納します。パースすることで、格納する前に入力の書式設定に伴う頭痛が発生します。必要に応じて任意の形式で表示できます。

$date = \Carbon\Carbon::parse($request->input('datetime')); 

編集:あなたのコメントやアップデートに基づいて、これを行います。

$data = request(['opponent', 'location', 'field', 'season_id']); 

$data['gdatetime'] = \Carbon\Carbon::parse(request('gdatetime')); 

$game = Game::create($data); 
+0

フォーム入力を使用する方法の例である – hoolakoola

+0

@hoolakoolaを試してみると、未定義の変数 'request'にエラーが発生します。 '$ request-> input( 'datetime')'をdatetimeの値に置き換えたり、フォーム入力を取り込む方法を置き換えることができます。 – Sandeesh

+0

これを '$ date = \ Carbon \ Carbon :: parse( 'gdatetime')に変更すると、' DateTime :: __ construct():位置0の時刻文字列(gdatetime)を解析できませんでした。 g):データベースにタイムゾーンが見つかりませんでした。 ' – hoolakoola

0

PHPを使用して変換します。

date('date format here', strtotime($user_input); 

date()

strtotime()

、常にユーザの入力サーバー側を検証するようにしてください、そうでないstrtotime()あなたは常にあなたの日時の入力を解析することができます1969年

0

またはあなたのモデルファイルでこれを定義することができます。

protected $dates = ['your_date_field]; 

と、データベースからそれを得るとき、それはカーボンのインスタンスになります。

関連する問題