質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

3回答

4831閲覧

mysqlのdate型の値が取得できない

navca

総合スコア44

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2017/03/22 08:23

初心者で恐縮ですが、ご教授ください。

cakephpでmysqlからdate型の値を取り出そうとしてるのですが、Unknown getter 'time'というエラーが出てきてしまいます。

以下をSQLを発行して取得しました。

$data = [ (int) 0 => object(Cake\ORM\Entity) { 'number' => 'A10002', 'purchaser_id' => (int) 3, 'date_order' => object(Cake\I18n\FrozenDate) { 'time' => '2017-03-19T00:00:00+00:00', 'timezone' => 'UTC', 'fixedNowTime' => false }, 'item_id' => (int) 5, '[new]' => false, '[accessible]' => [ '*' => true ], '[dirty]' => [], '[original]' => [], '[virtual]' => [], '[errors]' => [], '[invalid]' => [], '[repository]' => 'order_Details' }, (int) 1 => object(Cake\ORM\Entity) { 'number' => 'A10013', 'purchaser_id' => (int) 3, 'date_order' => object(Cake\I18n\FrozenDate) { 'time' => '2017-03-22T00:00:00+00:00', 'timezone' => 'UTC', 'fixedNowTime' => false }, 'item_id' => (int) 4, '[new]' => false, '[accessible]' => [ '*' => true ], '[dirty]' => [], '[original]' => [], '[virtual]' => [], '[errors]' => [], '[invalid]' => [], '[repository]' => 'order_Details' } ]

取得するコードは以下の様に書きました。

foreach($data as $key){ $date_o[] = $key->date_order; foreach($date_o as $date){ $datea = new Date($date->time); $arr[] = $datea->format('Y-m-d H:i:s'); } }

これで$arrには「2017-03-19~」と「2017-03-22~」が配列になって入るはずだと思いましたが、うまくいきません。

以上です。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

date_orderはすでにFrozenDateクラスのオブジェクトになっているので、単に以下のようにformatメソッドを呼んであげればいいだけではないかと

php

1foreach($data as $entity){ 2 $arr[] = $entity->date_order->format('Y-m-d H:i:s'); 3}

投稿2017/03/22 14:22

popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

navca

2017/03/22 15:33

回答ありがとうございます。できました。勉強になりました。
guest

0

foreach($data as $key){ $date_o[] = $key->date_order; foreach($date_o as $date){ $datea = new Date($date->time); $arr[] = $datea->format('Y-m-d H:i:s'); } }

この感じだと$keyに
{
(int) 0 => object(Cake\ORM\Entity) {...},
(int) 1 => object(Cake\ORM\Entity) {...}
}

が入ってきているような気がするので、もう一回ループさせないとダメではないでしょうか?

投稿2017/03/22 10:41

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

navca

2017/03/22 11:14

回答ありがとうございます。$date_oの中身がおっしゃる通りの形にはなってると思います。↓ [ (int) 0 => object(Cake\I18n\FrozenDate) { 'time' => '2017-03-19T00:00:00+00:00', 'timezone' => 'UTC', 'fixedNowTime' => false }, (int) 1 => object(Cake\I18n\FrozenDate) { 'time' => '2017-03-22T00:00:00+00:00', 'timezone' => 'UTC', 'fixedNowTime' => false } ]
guest

0

$date['time']だとダメでしょうか??

投稿2017/03/22 09:09

s.t.

総合スコア2021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

navca

2017/03/22 09:50

回答ありがとうございます。Cannot use object of type Cake\I18n\FrozenDate as array でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問