Стоит задача, вывести результат из 2х таблиц в одну коллекцию.
Как я понял, нужно объединить 2 таблицы, это я сделал вот так:
$travel = Travel::query();
$home = Home::query();
$travel = $travel->get();
$query = $query->get();
$all = $travel->merge($home);
Такой вариант работает без проблем, таблицы объединяются, но вот пагинация теперь не работает, тоесть когда я передаю это в представление:
return view('table')->with('all', $all);
Я не могу в представлении вызвать пагинацию $all->links()
Смотрел различные решения с помощью класса Paginator, но так и не получилось вызвать пагинацию в представлении.
Используй метод union Laravel union
$travel = DB::table('travel');
$home = DB::table('home')
->union($travel )
->get();
Но union из коробки не правильно работает с пагинацией, поэтому для пагинации используй следующий трюк (пример замени своим):
namespace App\Http\Controllers;
use Input;
use Request;
use View;
class AdminController extends Controller
{
public function index()
{
$page = Input::get('page', 1);
$paginate = 10;
$travel = DB::table("travel");
$data = DB::table("home")
->union($travel)
->get();
$offSet = ($page * $paginate) - $paginate;
$itemsForCurrentPage = array_slice($data, $offSet, $paginate, true);
$data = new \Illuminate\Pagination\LengthAwarePaginator($itemsForCurrentPage, count($data), $paginate, $page);
return View::make('index',compact('data'));
}
}
Использовал класс отсюда https://gist.github.com/simonhamp/549e8821946e2c40a617c85d2cf5af5e
но проблема была в том, что пагинация обнулала query string в запросе, поэтому поменял строчку в классе, чтобы параметры запроса тоже учитывались
LengthAwarePaginator::resolveCurrentPath()
поменял на
LengthAwarePaginator::resolveCurrentPath() . "?" . \Request::getQueryString();
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники