为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Laravel 上使用 max() 连接多个表

如何在 Laravel 上使用 max() 连接多个表

PHP
扬帆大鱼 2023-04-21 10:41:40
我刚开始学习 Laravel,但我被困在了这个问题上。我怎么能在 Laravel 上使用 QuerySelector 或 Eloquent 做这个选择?这就是我想要达到的结果这就是我到目前为止的结果:$produtos = \DB::table('produtos AS p')    ->leftJoin('produtos_fotos AS pf','pf.produto_id','=','p.id')    ->leftJoin('produtos_grade AS pg','pg.produto_id','=','p.id')      ->select('p.id','p.referencia','p.descricao','p.preco','p.ratings',                                  'p.categorias_produtos as categoria','p.promocao','p.genero', 'p.cabedal as materialCabedal','p.solado as materialSolado', 'p.altura_salto AS alturaSalto','pf.url','pf.nome_foto','min(pg.tamanho) as tam_min', 'max(pg.tamanho) as tam_max')     ->where(['p.fornecedor_id' => $idFornecedor])     ->groupBy('p.id')     ->get())但我得到一个错误:Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'min(pg.tamanho)' in 'field list'块引用
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

如果您想在查询中使用原始表达式,请在 laravel 中打招呼。你需要使用DB::raw 方法

在您的情况下,更改为以下将起作用。


$produtos = \DB::table('produtos AS p')

     ->leftJoin('produtos_fotos AS pf','pf.produto_id','=','p.id')

     ->leftJoin('produtos_grade AS pg','pg.produto_id','=','p.id')

     ->select(

          'p.id',

          'p.referencia',

          'p.descricao',

          'p.preco',

          'p.ratings',

          'p.categorias_produtos as categoria',

           'p.promocao',

           'p.genero',

           'p.cabedal as materialCabedal',

           'p.solado as materialSolado',

           'p.altura_salto AS alturaSalto',

           'pf.url', 

           'pf.nome_foto',

                DB::raw('min(pg.tamanho) as tam_min'),

                 DB::raw('max(pg.tamanho) as tam_max')

      )

      ->where(['p.fornecedor_id' => $idFornecedor])

      ->groupBy('p.id')

      ->get())


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信