合并两个集合并对它们进行分页
Combining two collections and paginating them
所以我在数据库中有广告。
广告有 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() 就不能分页,但是如果我不使用它,我就不能合并它们,我想合并它们,因为我希望它能按那个顺序排列它们。
感谢您的帮助,希望我已经正确解释了所有内容。 :)
您应该能够在一次查询中完成。试试这个
$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);
所以我在数据库中有广告。 广告有 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() 就不能分页,但是如果我不使用它,我就不能合并它们,我想合并它们,因为我希望它能按那个顺序排列它们。
感谢您的帮助,希望我已经正确解释了所有内容。 :)
您应该能够在一次查询中完成。试试这个
$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);