无法将stdClass类型的对象用作数组Laravel错误

时间:2019-08-03 16:20:11

标签: php laravel controller laravel-5.8

因此,当我尝试从具有数组的数据库中检索数据时,出现此错误“无法将stdClass类型的对象用作数组”

我的控制器

public function openingPage($id) {

      $this->getCaseData($id);

      return view('caseopener', ['cases' => $cases]);

    }

    private function getCaseData($id) {
        $cases = DB::table('cases')->where('id', $id)->first();
        $data = @$cases[0] ? $cases[0] : array();
        if(isset($data->items)) {
            $data->items = json_decode($data->items, true);
        }

        $this->data = $data;
    }

我也看到问题出在这一行:

 $data = @$cases[0] ? $cases[0] : array();

1 个答案:

答案 0 :(得分:0)

您没有为返回视图的$cases变量分配任何内容。所以在这一行:

 $this->getCaseData($id);

您调用下面的函数,该函数设置$this->data,但是在$case方法中的任何时候都不会分配openingPage()。然后,当您使用名为“ cases”的变量返回视图时,它没有任何可发送的内容:

return view('caseopener', ['cases' => $cases]);

分配变量$ cases:$cases = $this->getCaseData($id);或返回类变量:

return view('caseopener', ['cases' => $this->data]);