Pobieram dane z 3 tabel, różnią się kolumnami (kolumna created_at jest w każdej), aktualnie pobieram każdą z tabel i za pomocą ->map() dodaje fake kolumne (nie obejde tego, musze ją dodawać), sortuje za pomocą usort(według created_at) i łącze te 3 tabele za pomocą merge_array a następnie robię paginacje. Problem jest taki, że mimo paginacji zawsze pobierają się wszystkie rekordy. Ta paginacja nie działa tak jak zwykłe ->paginate() na obiekcie (taka fake paginacje bez limit). Ogólnie łącze te tabele i potem wyświetlam rekordy z tych tabel wedlug created_by. Jak mogę za pomocą sqla lub orm zrobić aby paginacja działała w normalny sposób i było to optymalne? Dodam, ze union próbowałem ale problem z różnicą kolumn. Prosze o pomoc.
public function getTestData() { $test1 = Test1::select(['updated_at', 'accrual_amount']) ->where('user_id', Auth::id()) ->get(); $test1->map(function ($a) { $a['type'] = 'test1'; }); $test2 = Test2::select(['updated_at', 'amount_currency', 'currency']) ->where('user_id', Auth::id()) ->get(); $test2->map(function ($a) { $a['type'] = 'test2'; }); $test3 = Test3::select(['updated_at', 'accrual_amount']) ->where('user_id', Auth::id()) ->get(); $test3->map(function ($a) { $a['type'] = 'test3'; }); }); $paginator = new ArrayPaginator(request()); return $paginator->paginate($abc, 10, '/url'); }