やりたいこと
LaravelでDBから返ってきたstdClassのオブジェクトの値を取得する際、エラーが出てしまったのでメモです。
以下の場合に、'2022-12-04'を取得したい。
// 取得したデータ
$latestDate = array (
0 =>
(object) array(
'MAX(users.created_at)' => '2022-12-04',
),
)
エラーが出た
いつものように以下のように書くと、エラーとなりました。
echo $latestDate[0]->MAX(users.created_at); //Call to undefined method stdClass::MAX() {"exception":"[object] (Error(code: 0): Call to undefined method stdClass::MAX() at …
MAX()
がプロパティ名ではなく、メソッドだと認識されてしまっています。
解決策
プロパティ名を{''}
で囲うと取得することができました。
echo $latestDate[0]->{'MAX(users.created_at)'}; //'2022-12-04'
参考