合并三个不相关的表并在单个页面上显示结果
Combine three unrelated tables and show results on single page
我在 laravel5.6 vuejs2 应用程序中有三个表
- 供稿(id,消息,created_at,updated_at,created_by,updated_by)
- 分类广告(id,category_id,标题,描述,关键字,created_at,updated_at,created_by,updated_by)
- 新闻(id、标题、副标题、内容、关键字,created_at、created_by、updated_at、updated_by)。
我想创建一个像 facebook 这样的后端,我可以在其中列出所有最新的 post 作为故事。在这种情况下,我想 post 带有加载更多按钮的提要、分类广告和新闻。如何实现?
$feed = Feed::latest()->paginate(10);
$classifieds = Classifieds::latest()->paginate(10);
$news = News::latest()->paginate(10);
$stories = array_merge(['feed', 'classifieds', 'news']);
这是行不通的,我知道这不是正确的做法。我是 laravel 的学习者,在这方面没有找到太多帮助。
任何人都可以告诉我如何执行此操作,以便我可以将仪表板页面上不相关的所有三个表列为最新故事。
创建 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 可以给你一个想法。
我在 laravel5.6 vuejs2 应用程序中有三个表
- 供稿(id,消息,created_at,updated_at,created_by,updated_by)
- 分类广告(id,category_id,标题,描述,关键字,created_at,updated_at,created_by,updated_by)
- 新闻(id、标题、副标题、内容、关键字,created_at、created_by、updated_at、updated_by)。
我想创建一个像 facebook 这样的后端,我可以在其中列出所有最新的 post 作为故事。在这种情况下,我想 post 带有加载更多按钮的提要、分类广告和新闻。如何实现?
$feed = Feed::latest()->paginate(10);
$classifieds = Classifieds::latest()->paginate(10);
$news = News::latest()->paginate(10);
$stories = array_merge(['feed', 'classifieds', 'news']);
这是行不通的,我知道这不是正确的做法。我是 laravel 的学习者,在这方面没有找到太多帮助。
任何人都可以告诉我如何执行此操作,以便我可以将仪表板页面上不相关的所有三个表列为最新故事。
创建 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 可以给你一个想法。