[踩坑]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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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