我有一个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错误:
无法绑定多部分标识符“MAX([formulas.id])”。
我已经阅读了如何在laravel中使用聚合器,但我不能在这种情况下使用它们,我试图使用DB :: raw(),但没有运气。
我希望有人能够知道答案,提前谢谢。
答案 0 :(得分: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()