[踩坑]laravel 獲取一個model查詢結果中不存在的屬性返回NULL

JonnaYaaa發表於2020-08-05

問題描述:我查詢到了一個結果集,我要從結果集獲取一個屬性,例如user_id,事實是這個結果集中不存在user_id這個屬性,但是並沒有報錯,而是返回了null,導致我呼叫介面的時候沒發現這個問題,bug就這樣產生
查詢結果($res)如下
【踩坑】laravel 獲取一個model查詢結果中不存在的屬性返回NULL
獲取$res->aaaa (aaaa屬性是不存在的),卻返回了null !!!!

【踩坑】laravel 獲取一個model查詢結果中不存在的屬性返回NULL
why?????都不報錯的麼!!!!
找了找 找了找 找了找
哦 原來是這樣
在Medel.php檔案中有這樣一個魔術方法:__get
【踩坑】laravel 獲取一個model查詢結果中不存在的屬性返回NULL
魔術方法__get中又呼叫了這個方法

【踩坑】laravel 獲取一個model查詢結果中不存在的屬性返回NULL

根據一步步列印發現,這個方法中呼叫了$this->getRelationValue($key)這個方法
然而 繼續看 繼續看 繼續看

【踩坑】laravel 獲取一個model查詢結果中不存在的屬性返回NULL

一步步列印,發現這個方法中的if,對於傳過來的aaaa這個key全都不滿足,sososo~
這個方法什麼都沒有返回,因此這是一個空方法,呼叫一個空方法的結果就是返回了null

就這樣吧 ,我去恢復資料了,拜~

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章