【发布时间】:2019-12-11 21:16:14
【问题描述】:
因此,当我尝试使用数组从数据库中检索数据时,出现此错误“无法使用 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();
【问题讨论】:
-
使用
first()从 Laravel 查询构建器中检索一行将返回一个对象,更具体地说是一个 PHPstdClass实例(因此出现错误消息)。但是,您正试图通过$cases[0]访问数组的第一项。如果你调用get()而不是first()你会得到一个数组,那么你的代码就会像你期望的那样工作。如果您想使用first(),那么您不需要$data分配,只需将结果分配给$case(单数)变量,条件应为if (!is_null($case)),以确保您从数据库。
标签: php laravel controller laravel-5.8