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

Php 无法将stdClass类型的对象用作数组Laravel错误,php,laravel,controller,laravel-5.8,Php,Laravel,Controller,Laravel 5.8,所以,当我试图用数组从数据库中检索数据时,出现了这个错误“不能将stdClass类型的对象用作数组” 我的控制器 public function openingPage($id) { $this->getCaseData($id); return view('caseopener', ['cases' => $cases]); } private function getCaseData($id) { $cases =

所以,当我试图用数组从数据库中检索数据时,出现了这个错误“不能将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();
 $this->getCaseData($id);

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

 $data = @$cases[0] ? $cases[0] : array();
 $this->getCaseData($id);
您可以调用下面的函数,该函数设置
$this->data
,但它不会在
openingPage()
方法中的任何点分配
$case
。然后返回带有变量“cases”的视图时,它没有要发送的内容:

return view('caseopener', ['cases' => $cases]);
分配变量$cases:
$cases=$this->getCaseData($id)或返回类变量:

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

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

 $data = @$cases[0] ? $cases[0] : array();
 $this->getCaseData($id);
您可以调用下面的函数,该函数设置
$this->data
,但它不会在
openingPage()
方法中的任何点分配
$case
。然后返回带有变量“cases”的视图时,它没有要发送的内容:

return view('caseopener', ['cases' => $cases]);
分配变量$cases:
$cases=$this->getCaseData($id)或返回类变量:

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

使用
first()
从Laravel查询生成器检索一行将返回一个对象,更具体地说是一个PHP
stdClass
实例(因此会返回错误消息)。但是,您正试图通过执行
$cases[0]
来访问数组的第一项。如果您要调用
get()
而不是
first()
,您将得到一个数组,那么您的代码将按预期工作。如果要使用
first()
,则不需要
$data
赋值,只需将结果赋值给
$case
(单数)变量,条件应为
If(!is_null($case))
,以确保从数据库中获得匹配。使用
first()从Laravel查询生成器检索单行
将返回一个对象,更具体地说是一个PHP
stdClass
实例(因此会返回错误消息)。但是,您正试图通过执行
$cases[0]
来访问数组的第一项。如果您要调用
get()
而不是
first()
,您将得到一个数组,那么您的代码将按预期工作。如果要先使用
first()
,则不需要
$data
赋值,只需将结果赋值给
$case
(单数)变量,如果(!is_null($case))
,则条件应为
,以确保从数据库获得匹配。