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