[踩坑]laravel 获取一个model查询结果中不存在的属性返回NULL

问题描述:我查询到了一个结果集,我要从结果集获取一个属性,例如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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!