資料集CollectionTP5報Cannot use object of type __PHP_Incomplete_Class as array錯誤
阿新 • • 發佈:2018-12-02
$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());