首页 > 解决方案 > 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);
}

标签: phplaravel

解决方案


您可以将结果存储在 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);

}


推荐阅读