如何在laravel中为给定的输入搜索两个表

i1icjdpr  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(268)

在我的申请表中,有 article 以及 news table。我知道我可以在新闻表或文章中搜索匹配的标题,只需执行以下操作:

$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 好像他们在同一张table上。
拉威尔5.4

nnt7mjpx

nnt7mjpx1#

你可以这样做,如果得到10条新闻和10篇文章每页是你想要的。但在这种情况下,您需要手动创建分页器。
加载数据:

$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');

相关问题