不能将stdclass类型的对象用作laravel中的数组

56lgkhnf  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(324)

我得到以下错误:
php致命错误:无法在第115行的c:\xampp\htdocs\enginepoker2\storage\framework\views\10cbbd076bede57a96e59c43af0e1b9e022b4a69.php中将stdclass类型的对象用作数组
查询生成器:

$statsMoneyInPlay = DB::table('enginepoker_log.poker')
    ->select(
        DB::raw("UNIX_TIMESTAMP(Date(ts)*100) as timestamp"),
        DB::raw("SUM(pot + p1pot + p2pot + p3pot + p4pot + p5pot + p6pot + p7pot + p8pot + p9pot) / count(*) As moneyInPlay")
    )
    ->groupBy(DB::raw("DATE(ts)"))
    ->orderByRaw("DATE(ts)")
    ->get()
    ->toArray();

获取错误的刀片:

@php
    foreach ($statsMoneyInPlay as $key => $value) {
        echo "[".$value[0].", ".$value[1]."],";
    }
@endphp
bxfogqkk

bxfogqkk1#

db查询返回 CollectionstdClass 物体。它不返回 Collection 数组的数目。打电话 toArray 在那上面 Collection 会给你一系列 stdClass 物体。

@foreach ($statsMoneyInPlay as $value)
    [ {{ $value->timestamp }}, {{ $value->moneyInPlay }} ],
@endforeach
rqmkfv5c

rqmkfv5c2#

错误源于对数组本身的误用。请尝试以下操作:

foreach($statsMoneyInPlay as $stat) {
  echo "[" . $stat['timestamp'] . ", " . $stat['moneyInPlay'] . "]";
}

编辑:编辑 $statsMoneyInPlay 是一个对象数组,因此访问它的正确方法是:

foreach($statsMoneyInPlay as $stat) {
  echo "[" . $stat->timestamp . ", " . $stat->moneyInPlay . "]";
}

相关问题