使用数组循环时不能将 stdClass 类型的对象用作数组

Cannot use object of type stdClass as array when looping with array

我正在尝试获取一个名为 TestRunList 的 table 的计数,它的外键与另一个名为 Testrun 的 table 相同,这意味着我想计算单个测试运行有多少个 testrunlist在同一页上我做了一个 forloop 来为每个测试运行列表获取测试运行 ID 但它似乎没有用我得到这个错误

Cannot use object of type stdClass as array

这是我在控制器中的代码

        $data = DB::table('TestRun')->get();
        $runs=array();
        for ($i=0;$i<sizeof($data);$i++)
        {
            $testrunID=$data[$i]['TestRunID'];
            $Testrunlist=TestRunList::where('test_run_id',$testrunID)->count();
            $runs[$i]=[
                'Countruns'=>$Testrunlist
            ];

        }

    return view('management.testrun.testrun-list')
        ->with('data',$data)
        ->with('runs', $runs);

$data是一个Collection,不能用数组语法访问

$data = DB::table('TestRun')->get();
$runs = [];
$data->each(function ($row) use ($runs) {
    $runs[] = [
        'Countruns' => TestRunList::where('test_run_id',$row-> TestRunID)->count()
    ];
});

return view('management.testrun.testrun-list')
    ->with('data',$data)
    ->with('runs', $runs);

始终使用

print_r($data);

如果是对象 运行 echo $data->username if array 运行 echo $data['username'];

所以你知道你正在处理什么类型的数据。