php - laravel 将所有数组合并为一个
问题描述
我有搜索功能,它可以搜索多个模型并返回结果,现在我想将所有这些模型结果放入一个变量中,这样我只能在刀片中使用一个变量。
我怎样才能做到这一点?
代码
public function results(Request $request) {
$q = $request->input('q');
$products = Product::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$posts = Post::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$pages = Page::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$tags = Tag::where('name', 'like', "%{$q}%")
->paginate(9);
$jobs = Job::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$categories = Category::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$listings = Listing::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$portfolios = Portfolio::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$services = Service::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
return view('front.pages.search', compact('products', 'q', 'pages', 'posts', 'tags', 'jobs', 'categories', 'listings', 'portfolios', 'services'))->withQuery($q);
}
解决方案
您可以将结果存储在 assoc 数组中,而不是单独的变量中。
public function results(Request $request) {
$q = $request->input('q');
$result = [];
$result['products'] = Product::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$result['posts'] = Post::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$result['pages'] = Page::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$result['tags'] = Tag::where('name', 'like', "%{$q}%")
->paginate(9);
$result['jobs'] = Job::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$result['categories'] = Category::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$result['listings'] = Listing::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$result['portfolios'] = Portfolio::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
$result['services'] = Service::where('name', 'like', "%{$q}%")
->orWhere('body', 'like', "%{$q}%")
->paginate(9);
return view('front.pages.search', compact($result))->withQuery($q);
}
推荐阅读
- python - 在flask_mongoengine中获取大学下的所有学院
- node.js - create-react-app 似乎在编译错误后缓存源文件
- grpc - 如何在 Yocto bitbake 配方中调用 python 模块?
- php - Laravel 8 - 找不到驱动程序:Illuminate\Database\QueryException 找不到驱动程序(SQL:select * from `list`)
- python - 脚本只写入它创建的许多文件中的第一个文件?
- sql - 如何将此 sql 查询转换为 django 查询集
- python - Manim 不制作视频
- rest - 源码易查看的情况下如何做好web app和api安全?
- sql - 在红移中为每月的每一天分配每月值
- oracle - Oracle Apex 选定列表,da 更新“所有”条目