Laravel объединить результат из 2х таблиц в одну

159
06 апреля 2019, 00:40

Стоит задача, вывести результат из 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, но так и не получилось вызвать пагинацию в представлении.

Answer 1

Используй метод 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'));
    }
}
Answer 2

Использовал класс отсюда https://gist.github.com/simonhamp/549e8821946e2c40a617c85d2cf5af5e

но проблема была в том, что пагинация обнулала query string в запросе, поэтому поменял строчку в классе, чтобы параметры запроса тоже учитывались

LengthAwarePaginator::resolveCurrentPath()

поменял на

LengthAwarePaginator::resolveCurrentPath() . "?" . \Request::getQueryString();
READ ALSO
Проблема с чат ботом , Callback api VK

Проблема с чат ботом , Callback api VK

Всем привет, пишу сейчас чат-бота для ВКВозникла проблема с пересылкой фотографий

145
Личные сообщения на PHP

Личные сообщения на PHP

Всем привет, пишу сайт и в нём написал раздел Личные сообщенияПосещаешь страницу человека, и кнопка отправить сообщения

170
Как реализовать выборку части текста из сообщения?

Как реализовать выборку части текста из сообщения?

Есть условное приложение, которое позволяет записывать в БД сообщения с секретными кодами внутриСекретный код записывается внутри фигурных...

167
Как решить ошибку?

Как решить ошибку?

Не работает отправка в Jabber, как решить ошибку? Доброго времени суток, друзья!

216