はじめに
時間と時間を足す計算がcarbonを使うと2行で済んで楽だったという話。
タイトルが分かりにくいので具体的に今回したいこと。
フォームから以下を入力
・日付(yyyy/MM/dd)
・開始時間(HH:mm)
・所要時間(分)
・DBには開始日時と終了日時がyyyy/MM/dd HH:mm:ssの形でインサート。
当初は開始時間と終了時間を入力する仕様だったが、所要時間を入力するほうが何かと都合がよくなったため。
timestampに変換して計算して分を時間にして・・・ちょっと面倒。
carbonでもっと簡単に出来る方法がありました。
やりかた
[php] // コントローラーでcarbonを読み込むuse Carbon\Carbon;
// ~~
// ~~中略
// ~~
// まずはフォームの日付と開始時間をくっつけて開始時間を出す。
$startDateTime = $request->date. ‘ ‘. $request->time;
// インスタンスを作成し、フォームの所要時間を加算する
$endDateTime = new carbon($startDateTime);
$endDateTime->addMinutes($request->time);
[/php]
addMinute()に引数を加えても1分しか加算されない。
引数を指定する場合はaddMinutes()にする。
引数を指定する場合はaddMinutes()にする。
addHour()やaddMonthも同様。
詳しくは公式に。
https://carbon.nesbot.com/docs/#api-addsub