Si verificano problemi con un array restituito da DB::select()
. Sto utilizzando pesantemente skip
e take
su Collections
di modelli eloquenti nella mia API. Sfortunatamente, DB :: select restituisce un array, che ovviamente non funziona con skip e take. Come convertire gli array in una collezione che può utilizzare questi metodi?API RESTful - Array alla raccolta Laravel 5
Ho provato
\Illuminate\Support\Collection::make(DB::select(...));
Il che funziona non è proprio come mi aspettavo, che avvolge l'intero array in una raccolta, non i singoli risultati.
È possibile convertire il ritorno da un DB::select
a una raccolta "corretta" che può utilizzare i metodi skip
e take
?
Aggiornamento
Ho anche provato:
$query = \Illuminate\Support\Collection::make(DB::table('survey_responses')->join('people', 'people.id',
'=', 'survey_responses.recipient_id')->select('survey_responses.id', 'survey_responses.response',
'survey_responses.score', 'people.name', 'people.email')->get());
Che mi dice ancora:
FatalErrorException in QueryHelper.php line 36:
Call to a member function skip() on array
Acclamazioni
Grazie per il commento. Ho gestito quella parte con Collection :: make(), sfortunatamente non riesco ancora a eseguire skip() e take() contro le collezioni. – LokiSinclair
Non sono sicuro di cosa intendi con skip() e take(). La dose della classe Collection non ha questi metodi. [Collezione] (http://laravel.com/api/5.0/Illuminate/Support/Collection.html) Puoi pubblicare ciò che vuoi fare con la raccolta? – ZengineChris
Sì, mi dispiace, la mia comprensione della classe Collection è stata limitata. Quello che voglio fare è costruire manualmente le intestazioni di paginazione con il salto e prendere i metodi. Sfortunatamente, questi metodi sembrano essere disponibili solo nella classe Query \ Builder. Dovrò trovare un altro modo. Grazie comunque. – LokiSinclair