Laravel中获取Eloquent模型attributes属性返回null问题
解决Laravel Eloquent模型获取attributes属性的问题
问题原因
Eloquent模型的__get()方法并非用来直接获取attributes这个受保护属性本身,它的作用是从attributes数组中取出指定键对应的字段值。当你调用$shop->__get("attributes")时,它会尝试在attributes数组里查找键为attributes的元素,而你的模型数据里不存在这个字段,所以返回null。
可行解决办法
推荐方法:使用官方提供的公开方法
Laravel Eloquent内置了getAttributes()方法,专门用于获取完整的attributes数组,直接调用即可:$x = $shop->getAttributes();不推荐方法:通过反射访问受保护属性
如果你因特殊需求必须直接访问attributes属性(不建议这么做,会破坏封装性),可以用PHP反射机制:$reflection = new ReflectionObject($shop); $attributesProp = $reflection->getProperty('attributes'); $attributesProp->setAccessible(true); $x = $attributesProp->getValue($shop);
内容的提问来源于stack exchange,提问作者Black
相关产品推荐
相关产品推荐

