如何在laravel中搜索两个表以获取给定输入

时间:2018-01-07 14:20:21

标签: php mysql laravel laravel-5.4

在我的应用程序中,有articlenews个表。我知道我可以在新闻表或文章中搜索匹配的标题, 只是通过做类似的事情:

$query =  $request['search'];

$searchResult= DB::table('article')->where('title', 'LIKE', '%$query%')
->orderBy('created_at', 'desc')->paginate(10);

$searchResult= DB::table('news')->where('title', 'LIKE', '%$query%')
->orderBy('created_at', 'desc')->paginate(10);

但我要做的是搜索它们并在新闻和文章方面返回一些有关它们的信息以及reuslt类型。而不是created_at,而是将它们放在同一张桌子上。

  

Laravel 5.4

1 个答案:

答案 0 :(得分:2)

如果您想要获得每页10条新闻和10篇文章,那么您可以这样做。但在这种情况下,您需要manually create paginator

加载数据:

$articles = DB::table('article')
    ->where('title', 'like', '%$query%')
    ->latest()
    ->skip(0) 
    ->take(10)
    ->get();

$news = DB::table('news')
    ->where('title', 'like', '%$query%')
    ->latest()
    ->skip(0) 
    ->take(10)
    ->get();

然后合并结果:

$merged = $articles->merge($news);

如果您需要,请按日期排序:

$merged = $merge->sortByDesc('created_at');