Объедините три несвязанные таблицы и покажите результаты на одной странице - PullRequest
0 голосов
/ 11 июня 2018

У меня есть три таблицы в приложении laravel5.6 vuejs2

  1. Фид (id, message, made_at, updated_at, создал_by, updated_by)
  2. Объявления (id, category_id, title,описание, ключевые слова, create_at, updated_at, creation_by, updated_by)
  3. Новости (идентификатор, заголовок, субтитры, контент, ключевые слова, made_at, creation_by, updated_at, updated_by).

Я хочусоздать бэкэнд, такой как Facebook, где я могу перечислить все последние сообщения в виде историй.В этом случае я хочу опубликовать фид, объявления и новости с помощью кнопки «Загрузить больше».Как этого добиться?

$feed = Feed::latest()->paginate(10);
$classifieds = Classifieds::latest()->paginate(10);
$news = News::latest()->paginate(10);

$stories = array_merge(['feed', 'classifieds', 'news']);

это не работает, и я знаю, что это неправильный способ.Я учусь на laravel и не нашел большой помощи в этом.

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

1 Ответ

0 голосов
/ 11 июня 2018

Создание ModelCollection - это отличный способ сделать это.

$collection = new ModelCollection();

$feed = Feed::latest();
$classifieds = Classifieds::latest();
$news = News::latest();

$stories = $collection->merge($feed)->merge($classifieds)->merge($news);

РЕДАКТИРОВАТЬ: Вы можете делать такие вещи нумерацией страниц.

$page = $request->get('page');
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);

$collection = new ModelCollection();
$feed = Feed::latest();
$classifieds = Classifieds::latest();
$news = News::latest();

$stories = $collection->merge($feed)->merge($classifieds)->merge($news);
$items = new LengthAwarePaginator($stories->forPage($page, 30), $result->count(), 30, $page,['path' => '/search']);

LengthAwarePaginator может сделать это, использование

LengthAwarePaginator(currentPageItems, collection_count, perPage, currentPage)

Надеюсь, это помогло.Раздел редактирования не может работать, я просто сказал, потому что lengthawarepaginator может дать вам идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...