2015-09-17 99 views
0

我有一個SQL查詢我想在laravel運行,這將是在mSQL的服務器工作的最終查詢使用聚合功能

select MAX([formulas].[id]), 
MAX([formulas].[numero]), 
MAX([formulas].[nombre]), 
MAX([formulas].[idSeccionFormula]), 
MAX([nombreProducto]), 
MAX([formulas_equivalencias].[equivalencia]), 
MAX([productos].[coste]), 
[formulas_detalle].[id] 
from [formulas] inner join [formulas_detalle] on 
[formulas].[id] =[formulas_detalle].[idFormula] inner join 
[formulas_equivalencias] on [formulas].[id] = [formulas_equivalencias].[idFormula] 
inner join 
[productos] on [formulas_detalle].[idProducto] =[productos].[id] 
where [idSeccionFormula] = 1 
group by [formulas_detalle].[id] 

我有這樣的Laravel:

$formulas = new Formula(); 
$formulas = $formulas 
->select('MAX([formulas.id])','MAX(formulas.numero)','MAX(formulas.nombre)','MAX(formulas.idSeccionFormula)', 'MAX(productos.nombreProducto)', 'MAX(formulas_equivalencias.equivalencia)', 'MAX(productos.coste)', 
          'formulas_detalle.id') 
        ->join('formulas_detalle', 'formulas.id', '= ', 'formulas_detalle.idFormula') 
        ->join('formulas_equivalencias', 'formulas.id', '= ', 'formulas_equivalencias.idFormula') 
        ->join('productos', 'formulas_detalle.idProducto', '= ', 'productos.id'); 

但我得到一個laravel錯誤:

The multi-part identifier "MAX([formulas.id])" could not be bound.

我已經閱讀了如何使用laravel聚合,但我不能在T使用它們他的情況下,我試圖使用DB :: raw(),但沒有運氣。

我希望有人可以知道答案,在此先感謝。

回答

1
$forumulas = $formulas->join('formulas_detalle', 'formulas.id', '= ', 'formulas_detalle.idFormula') 
         ->join('formulas_equivalencias', 'formulas.id', '= ', 'formulas_equivalencias.idFormula') 
         ->join('productos', 'formulas_detalle.idProducto', '= ', 'productos.id') 
         ->select([ 
           DB::raw('Max(formulas.id) as id'), 
           DB::raw('Max(formulas.numero) as numero'), 
           DB::raw('Max(formulas.nombre) as nombre'), 
           DB::raw('Max(formulas.idSeccionFormula) as idSeccionFormula'), 
           DB::raw('Max(productos.nombreProducto) as nombreProducto'), 
           DB::raw('Max(formulas_equivalencias.equivalencia) as equivalencia'), 
           DB::raw('Max(productos.coste) as coste') 
           ]) 
         ->get() 
+0

工作,謝謝, – user2957058

+0

很高興聽到,所以你現在可以接受我的答案:-p? –