やったこと

webサービスを作るときに考えたことを垂れ流します

CakePHP3で日付(Datetime)をMySQLに保存できない!

CakePHP3で時刻(DataTime型)を保存しようと思ったんだけど、なかなかできなくて躓いてしまった・・。

下記のようなコードで現在の日時をsaveしようとしたけども、保存されるのは「"0000-00-00 00:00:00"」というMySQLに設定したデフォルト値になってしまう・・。

$name = "pokotan";
$text = "ほげげげ";
$timestamp = date('Y-m-d H:i:s');
$data = compact("name", "text", "timestamp");

$entity = $this->Hogege->patchEntity($entity, $data);
$result = $this->Hogege->save($entity);

CakePHPでは、SQLに時刻を突っ込むときは下記のように「Time」の型を使わないといけないみたいですね。これでうまくいきました。

$name = "pokotan";
$text = "ほげげげ";
$timestamp = new Time(date('Y-m-d H:i:s'));

$data = compact("name", "text", "timestamp");

$entity = $this->Hogege->patchEntity($entity, $data);
$result = $this->Hogege->save($entity);


ちなみに「Time」のクラスを使うには、冒頭で「use Cake\I18n\Time;」の名前空間の宣言がいるので、忘れず書き込んでおいてくださいね。

以上です!