You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:50:24