Mohammad hayajneh
Mohammad hayajneh

Reputation: 674

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

I'm trying to get Count of a table called TestRunList that has the foreign key the same as another table called Testrun meaning i want to get count of how many testrunlist that single testrun has in the same page i did a forloop to get testrun id for each testrunlist but it didn't seem to work i get this error

Cannot use object of type stdClass as array

heres my Code in the controller

        $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);

Upvotes: 1

Views: 81

Answers (2)

Tailer
Tailer

Reputation: 6567

Always use

print_r($data);

if it's object run echo $data->username if array run echo $data['username'];

So you know what type of data you're dealing with.

Upvotes: 0

Lloople
Lloople

Reputation: 1824

$data is a Collection, you can't access using array syntax

$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);

Upvotes: 1

Related Questions