如何在Laravel的Eloquent\Builder查询构建器中应用指定Join查询
将DB::table的Join查询迁移到Eloquent Builder查询中
直接在你的Eloquent查询链上添加join方法和对应的过滤条件即可,以下是整合后的完整代码:
$afiliates = AdAfiliado::query() ->join('af_promocion as promo', 'ad_afiliado.Clave', '=', 'promo.id_afiliado') ->select('ad_afiliado.logo_url', 'ad_afiliado.NombreComercial', 'ad_afiliado.Destacado', 'ad_afiliado.id_afiliado', 'ad_afiliado.Clave', 'ad_afiliado.DestacadoInicio') ->where('Activo', '=', 'S') ->where('promo.v_fin', '>', $FechaActual) ->where(function (\Illuminate\Database\Eloquent\Builder $query) use ($request) { $query->orWhere('NombreComercial', 'like', "%{$request->search}%"); $query->orWhere('Etiqueta', 'like', "%{$request->search}%"); $query->orWhere('Categoria', 'like', "{$request->search}"); }) ->orderBy('CLAVE', $request->order) ->paginate(9);
关键修改说明:
- 加入
join方法:和DB::table版本的关联逻辑完全一致,主表使用实际表名ad_afiliado避免字段冲突 - 添加
promo.v_fin过滤条件:直接在查询链上追加对应where判断,和原DB查询逻辑保持一致 - 保留指定返回字段:如果不需要限制返回字段可以去掉
select方法,若要和原查询返回结果一致则保留该操作 - 原有的搜索、排序、分页逻辑完全保留,仅插入join和关联表的过滤条件
内容的提问来源于stack exchange,提问作者Pepe F.
相关产品推荐
相关产品推荐

