Laravel Select查询返回多余字段:如何仅获取指定字段数据?
解决Laravel Select查询返回多余Null字段的问题
嘿,我之前也碰到过一模一样的情况!你这个问题大概率是因为你的MyModal模型里配置了$appends属性,把update_time和rooms_number这两个字段追加到了模型的序列化结果里——哪怕你在查询语句里明确指定了要返回的字段,Laravel也会自动把这些追加字段加上,因为没有对应的数据,所以值就变成null了。
给你两个简单的解决办法:
方法一:查询时禁用追加字段(推荐)
直接在查询链里加上withoutAppends()方法,就能阻止模型自动追加额外字段,只返回你指定的三个字段:
MyModal::where('state', 1) ->select('code as popupContent', 'latitude as lat','longitude as lng') ->take(3) ->withoutAppends() ->get() ->toArray();
方法二:调整模型的全局配置
如果不需要全局追加这两个字段,你可以直接修改MyModal模型,把$appends数组里的update_time和rooms_number去掉:
// 在MyModal模型中 protected $appends = [ // 移除 'update_time', 'rooms_number' 这两个项 ];
另外还要检查模型里有没有对应的访问器(比如getUpdateTimeAttribute或getRoomsNumberAttribute方法),如果这些方法存在,即使没在$appends里配置,某些场景下也可能被包含进来,这时候用withoutAppends()同样能解决问题。
这样调整后,你的查询结果就会完全符合预期,只返回popupContent、lat和lng三个字段啦!
内容的提问来源于stack exchange,提问作者Mahdi Bashirpour
相关产品推荐
相关产品推荐

