找到如何从数据库连接3个查询的解决方案。但我无法尝试对我的代码中的信息进行分页:
$ads_default = AdModel::where('status','=', 1)->where('category_id','=',$this_category_id)->where('moderation','=', 0)->where('ad_diamond','=', 0)->where('ad_vip','=', 0)->orderBY('ad_pos', 'asc')->get();
$ads_vip = AdModel::where('status','=', 1)->where('category_id','=',$this_category_id)->where('moderation','=', 0)->where('ad_vip','=', 1)->orderBY('ad_vip_pos', 'asc')->get();
$ads_diamond = AdModel::where('status','=', 1)->where('category_id','=',$this_category_id)->where('moderation','=', 0)->where('ad_diamond','=', 1)->orderBY('ad_diamond_pos', 'asc')->get();
$merge_d_v = $ads_diamond->merge($ads_vip);
$merge_d_v_r = $merge_d_v->merge($ads_default);
$data['all_union_ads'] = $merge_d_v_r->all()->paginate(20);发布于 2022-07-20 19:05:06
不能在集合上调用分页,在查询上调用get()之后,它将解析查询。这可以是一些简单的orWhere()逻辑。
注意带有闭包的逻辑分组,以避免它是category_id = 1 AND ad_vip = 1,而不是类似于category_id = 1 AND (one_condition OR another condition)。
AdModel::where('status', 1)
->where('category_id', $this_category_id)
->where('moderation','=', 0)
->where(function ($query) {
$query->orWhere(function ($query) {
$query->where('ad_diamond','=', 0)
->where('ad_vip','=', 0)->orderBY('ad_pos', 'asc');
})->orWhere('ad_vip','=', 1)
->orWhere('ad_diamond','=', 1);
})->paginate();https://stackoverflow.com/questions/73056847
复制相似问题