アラサー転職組の新米エンジニア日記

2017年に未経験からエンジニアになったアラサーです。

CentOS7上でLaravelでWEBアプリケーションを作る ~DBクエリ,stdClassの値を直接参照する~

larabel初心者です。というかPHP初心者でもあります。

larabelのDBクラスから値を直接引っこ抜きたいんだけどどうもvar_dumpで表示させてみるとstdClass内に入ってて、このstdClassから直接値を参照しようと通常の連想配列から引き出すような感じで試したところ、Woooops!!ってなるので調べたところ下記で解決したのでその記録に。

select * from user;

id name old
4 sato 20
5 yamada 20
6 yoshida 20

routes/web.php

Route::get('/', function() {
  $message = DB::select('select * from user');
  echo '<pre>' . var_export($message,true) . '</pre>';
  $test= $message[0];
  print_r($message[0]);
  print '<br>'. $message[0]->name;
  print '<br>'.$message[1]->name;
  print '<br>'.$message[2]->name.'<br>';
  return 'おわり';
});

ブラウザでは下記が表示される

array (
  0 =>
  stdClass::__set_state(array(
     'id' => 4,
     'name' => 'sato',
     'old' => 20,
  )),
  1 =>
  stdClass::__set_state(array(
     'id' => 5,
     'name' => 'yamada',
     'old' => 20,
  )),
  2 =>
  stdClass::__set_state(array(
     'id' => 6,
     'name' => 'yoshida',
     'old' => 20,
  )),
)

stdClass Object ( [id] => 4 [name] => sato [old] => 20 )
sato
yamada
yoshida
OK

下記の表記でいけるっぽい

print '<br>'.$message[0]->name;
print '<br>'.$message[1]->name;
print '<br>'.$message[2]->name;

上記みたいな形で書けばいいみたい。 何かほかにいい方法知ってたら教えてください。