2015-06-30 2 views
4

Я работаю над локальным проектом с Laravel 5. Я пытаюсь захватить то, что потенциально может (или стать) огромным количеством данных. Я делаю такLaravel chunk() ошибочно с array_chunk?

$tickets = Ticket::getResolvedTicketsBetween($start,$end)->chunk(200, function($chunkOfTickets){ 
    foreach ($chunkOfTickets as $ticket) { 
     echo $ticket->id; 
    } 
}); 

Проблема я получаю ошибку

array_chunk() expects parameter 3 to be boolean, object given 

Что я делаю неправильно? Может кто-то, пожалуйста, помогите мне, я следую документации соответственно ... Я думаю ...

+0

что является 'метод getResolvedTicketsBetween' возвращения? Коллекция? Запрос? – Kryten

+0

эта функция на самом деле один линия. Возврат Ticket :: where ('created_at', '> =', $ start) -> где ('created_at', '<=', $end)-> где (' state ',' = ',' Resolved ') -> get(); – Thaenor

ответ

2

Я только что сделал поиск рамы Laravel и единственное использование в классе Collection, который имеет функцию chunk(), а не для путаницы с функцией chunk() класса построителя запросов.

Если getResolvedTicketsBetween() делает вызов get() тогда он будет в конечном итоге возвращаются в Коллекция. Если вы хотите продолжить работу над запросом, удалите вызов get().

Моя догадка, как ваш код может выглядеть:

function getResolvedTicketsBetween($start, $end) { 

    // Dont do this 
    // return Ticket::where('created_at', '>=', $start)->where('created_at', '<=', $end)->where('state','=','Resolved')->get() 

    // Do this instead (returns Query Builder instance) 
    return Ticket::where('created_at', '>=', $start)->where('created_at', '<=', $end)->where('state','=','Resolved'); 
} 
+1

AHHH ОК, я понял. Это была ошибка get(). С этой ошибкой я не думаю, что я бы никогда не подумал об этом сам. Большое спасибо. – Thaenor

+1

Нет проблем. Всякий раз, когда я сталкиваюсь с проблемами с Laravel, я погрузиться в код рамки и посмотреть, что происходит. Это очень помогает. 'vendor/laravel/framework/src' - ваш друг. –

+0

По немногому вопросу. Я могу вызвать функцию внутри каждого из них, например, $ ticket- > updateValue(), а затем повторить этот билет внутри модуля как $ this right? – Thaenor

Смежные вопросы