组合两个集合并对其进行分页

时间:2015-03-03 17:12:00

标签: laravel laravel-4 pagination

所以我在数据库中有广告。 广告有3种类型。精选,大胆和免费。 我想在页面中显示它们。首先根据选择的类别。 我希望首先通过添加日期显示所有特色,然后通过添加日期显示所有大胆和免费项目。我想给他们分页。

我试过这个:

    $adsFeatured = Ads::where('category', '=', $category)->where('status', 'enabled')->where('type', 'featured')->get();
    $adsOther = Ads::where('category', '=', $category)->where('status', '=', 'enabled')->where('type', '=', 'free')->orWhere('type', '=', 'bold')->get();
    $adsOther->merge($adsFeatured);
    $adsFeatured->paginate(15);

但是当然,如​​果我使用get(),它就不能分页,但是如果我不使用它然后我不能合并它们,我想合并它们,因为我希望它能按顺序放置它们。

感谢您的帮助,我希望我已经正确地解释了一切。 :)

1 个答案:

答案 0 :(得分:1)

您应该可以在一个查询中执行此操作。试试这个

$ads = Ads::selectRaw('*, IF(type = "featured",1,0) AS is_featured')
          ->where('category', $category)
          ->where('status', 'enabled')
          ->orderBy('is_featured', 'desc')
          ->orderBy('created_at', 'desc')
          ->paginate(15);