前言
今天碼磚的時候發現laravel orm的訪問器在使用者前臺死活都用不了,但是管理員後臺卻顯示正常,一時間感到很迷亂……
問題原因
經過仔細觀察,原來後臺是先查詢然後再透過手工呼叫物件屬性的方式顯示,前臺則是查詢後直接將結果返回給使用者。
翻了下官方手冊,orm的訪問器並不是在資料庫查詢的時候起的作用,而是在呼叫相應的orm物件屬性的時候才會生效。
所以,想用訪問器的話就不要把查詢到的orm物件直接返回給客戶了,中間加一層處理就好了。
附加
根據訪問器的工作原理可知,假如資料庫查詢時限制了輸出的欄位,那麼在訪問器中被限制輸出的欄位是沒辦法用$this->field或$this->attributes[‘field’]來索引的。
非技術的路過。
給你一個非技術的回覆