1. 程式人生 > >資料集CollectionTP5報Cannot use object of type __PHP_Incomplete_Class as array錯誤

資料集CollectionTP5報Cannot use object of type __PHP_Incomplete_Class as array錯誤

本來是寫登陸功能的時候將管理員資料儲存到session中去,然後在BaseController中獲取session並輸出到模板,主要程式碼如下: login控制器
$result = AdminModel::get(['username'=>$data['username']]);
unset($result->password);
session('adminAccount',$result);
$this->success('登陸成功','index/index','',2);

BaseController

public function
_initialize(){ if(!$this->isLogin()){ $this->redirect('login/index'); } if(Session::has('sysData')){ $sysdata = Session::get('sysData'); }else{ $this->getSysData(); $sysdata = Session::get('sysData'); } $admin
= Session::get('adminAccount'); $this->assign('admin',$admin); $this->assign('sysdata',$sysdata); }

Cannot use object of type __PHP_Incomplete_Class as array

1、本來登陸功能之前就已經寫好了,也沒出問題,今天突然報錯,看了下大體意思是資料型別輸出的問題,網上搜了下,似乎是不建議將物件查詢的結果物件直接儲存到session中取的,我們知道,TP5的返回結果雖說預設是array,但裡面還是一堆物件,有時處理還會有問題,所以找到了一個自認為比較穩妥的方法。

在這裡插入圖片描述

2、將database中的返回型別改為資料集,預設是array。資料集支援物件化的操作,也可以用訪問陣列的方式訪問它,TP官方推出collection返回型別設定不是木有道理的,幾乎滿足獲取資料之後的主要操作。更多操作詳情訪問這一篇。

// 資料集返回型別
'resultset_type'  => 'collection',

3、將上方程式碼改成如下所示後就OK了

session('adminAccount',$result->toArray());