2016-01-20 5 views
2

У меня есть запрос, и он возвращает объект. Я хочу, чтобы каждый из объекта становится массивом:Laravel make каждый объект становится массивом

Вот мой запрос:

$transactions['transactions'] = Transaction::groupBy(DB::raw('DATE(created_at)')) 
     ->selectRaw('FLOOR(SUM(amount)) as total, DATE(created_at) as date') 
     ->orderBy('created_at') 
     ->get()->toArray; 

Вот результат я получаю:

"transactions": [ 
    { 
    "total": "88781", 
    "date": "2015-01-01" 
    }, 
    { 
    "total": "95630", 
    "date": "2015-01-02" 
    }, 
    { 
    "total": "57857", 
    "date": "2015-01-03" 
    }, 
    { 
    "total": "85252", 
    "date": "2015-01-04" 
    }, 
    { 
    "total": "64763", 
    "date": "2015-01-05" 
    } 
] 

Ожидаемый результат:

"transactions": [ 
    [ 
    "88781", 
    "2015-01-01" 
    ], 
    [ 
    "95630", 
    "2015-01-02" 
    ], 
    [ 
    "57857", 
    "2015-01-03" 
    ], 
    [ 
    "85252", 
    "2015-01-04" 
    ], 
    [ 
    "64763", 
    "2015-01-05" 
    ] 
] 

Я пробовал json_decode, но мне не повезло.

Любое решение?

+0

Как вы получаете свой результат? Вы печатаете свой результат в шаблон html/blade? Можете ли вы умереть и сбросить свою переменную, чтобы получить этот результат? etc –

+0

Как работает ':: ->'? Типо, я догадываюсь? –

+0

@PatrickStephan No. Я попытался использовать диаграмму nvd3 и ожидал массив вместо объекта. – ssuhat

ответ

2

Вы можете попробовать отображение над значениями в коллекции и их преобразования в не-ассоциативные массивы:

$transactions_result = Transaction::groupBy(DB::raw('DATE(created_at)')) 
     ->selectRaw('FLOOR(SUM(amount)) as total, DATE(created_at) as date') 
     ->orderBy('created_at') 
     ->get(); 

$transactions_result_as_array = $transactions_result->map(function($item, $key){ 
    return [$item->total, $item->date]; 
}); 

$transactions['transactions'] = $transactions_result_as_array->toArray(); 
+0

Удивительный !. Прекрасно работает !. Спасибо чувак – ssuhat