
postgresqlのDBに以下のようなレコードがあるとします。
date date型 ts timestamp型 date ts 2016-08-31 2016-08-31 10:00:00
Controllerでは次のように記述しています。
private function update($object, $request) { $object -> date = $request -> date; $object -> ts = $request -> ts; $object->save(); return $object; }
Viewからは以下のような値が来ればそのとおりにレコードには登録されます
<input class="event" id="date" name="date" type="text" value="2016-08-31"> <input class="event" id="ts" name="ts" type="text" value="2016-08-31 10:00:00">
で、今回行いたいことは、timestamp型にdateの値と、tsの値のうちの時間の部分(H:i:s)を合体させて登録することです。
次のようなイメージでできると思っていました…が
<input class="event" id="date" name="date" type="text" value="2016-08-31"> <input class="event" id="ts" name="ts" type="text" value="10:00:00"> private function update($object, $request) { $object -> date = $request -> date; // 2016-08-31 $object -> ts = $request -> date . ' ' . $request -> ts; // 2016-08-31 10:00:00 になる? $object->save(); return $object; }
実際は次のようなエラーが返ってきました。
InvalidArgumentException in Carbon.php line 425: Unexpected data found. Unexpected data found. Data missing in Carbon.php line 425 at Carbon::createFromFormat('Y-m-d H:i:s', '10:00:00') in Model.php line 2969 at Model->asDateTime('10:00:00') in Model.php line 2923 at Model->fromDateTime('10:00:00') in Model.php line 2878 at Model->setAttribute('ts', '10:00:00') in Model.php line 3420 at Model->__set('ts', '10:00:00') in TestsController.php line 118 . . .
もし、次のような記述だと
<input class="event" id="date" name="date" type="text" value="2016-08-31"> <input class="event" id="ts" name="ts" type="text" value="2016-08-31 10:00:00"> private function update($object, $request) { $object -> date = $request -> date; // 2016-08-31 $object -> ts = $request -> date . ' ' . $request -> ts; // 2016-08-31 2016-08-31 10:00:00 になると思われる $object->save(); return $object; }
エラーにはなりますが、ある種期待動作です。結合ができているので。
InvalidArgumentException in Carbon.php line 425: The separation symbol could not be found Unexpected data found. Trailing data in Carbon.php line 425 at Carbon::createFromFormat('Y-m-d H:i:s', '2016-08-31 2016-08-31 10:00:00') in TestsController.php line 124
tsのvalueが「2016-08-31」でも「10」でも「a」でもちゃんとdateと結合されてくれますが、文字列に「:」が含まれていたら結合をしてくれません。
text型とtext型の結合はできるのに、date型とtimestamp型を組み合わせることができません。どうすれば良いのでしょうか。まったく解決策が思い浮かびません。。。


回答1件
あなたの回答
tips
プレビュー