【发布时间】:2014-09-05 17:22:51
【问题描述】:
有没有一种优雅的方法可以从 Eloquent 对象中删除 NULL 值?我的对象嵌套在关系中。这个特定的调用可能有 1000 行长,所以我尝试这样做的主要原因是为用户节省带宽,但服务器性能也是一个考虑因素。
我的代码:
$data['locations'] = Location::with('address')->where('user_id', '1')->get();
return Response::json($data);
我尝试了 Mutators,但除非我弄错了,否则 Mutators 对对象键没有权力,只有值。
我也尝试过使用这样的array_filter,但失败了:
Any PHP function that will strip properties of an object that are null?
How to remove empty associative array entries
按要求编辑,
{
"status": "ok",
"locations": [
{
"id": "1",
"latitude": "12.239107980271",
"longitude": "109.19479025725",
"user_time": "",
"transport": "Bus",
"title1": "",
"title2": "",
"address": {
"town": "Nha Trang",
"country": "Vietnam",
"address": "36-44 Hùng Vương, Lộc Thọ, Nha Trang, Khanh Hoa Province, Vietnam"
},
"altitude": {
"altitude": "10.006237983704"
},
"timezone": {
"offset": "25200"
},
"forecast": {
"icon": "",
"high_temp": "",
"low_temp": ""
}
},
{
"id": "2",
期望的响应:
{
"status": "ok",
"locations": [
{
"id": "1",
"latitude": "12.239107980271",
"longitude": "109.19479025725",
"transport": "Bus",
"address": {
"town": "Nha Trang",
"country": "Vietnam",
"address": "36-44 Hùng Vương, Lộc Thọ, Nha Trang, Khanh Hoa Province, Vietnam"
},
"altitude": {
"altitude": "10.006237983704"
},
"timezone": {
"offset": "25200"
}
},
{
"id": "2",
如您所见,我可以简单地遍历整个批次并删除任何没有值的键(或键的键)。我希望 Laravel 可以提供一种简洁/快速的方式来做同样的事情。
我应该补充一点,从技术上讲,只有纬度和经度是必填字段!
【问题讨论】:
-
发布一个例子,说明你得到了什么以及你想要的结果。