Laravel SQL Query difícil
Pregunta
No puedo "traducir" la consulta de SQL a continuación para Laravel, ¿cómo puedo hacer esto?
SELECT SUM(transactions.amount) AS total, products.name
FROM transactions, product_stock, product_catalog, products
WHERE transactions.id_product_stock = product_stock.id_prodct_stock
AND product_stock.id_product_catalog = product_catalog.id_product_catalog
AND product_catalog.id_product = products.id_produto
GROUP BY (products.name);
Intenté este (error de devoluciones):
Transaction::join('product_stock', 'transactions.id_product_stock', '=', 'product.stock.id_product_stock')
->join('product_catalog', 'product_stock.id_product_catalog', '=', 'product_catalog.id_product_catalog')
->join('products', 'product_catalog.id_product', '=', 'products.id_product')
->groupBy('products.name')
->get([ DB::raw('SUM(transactions.amount) AS total'), DB::raw('products.name as name')]);
y esto (devuelve vacío):
DB::raw('select SUM(transactions.amount) AS total, products.name
from transactions, product_stock, product_catalog, products
where transactions.id_product_stock = product_stock.id_prodct_stock
and product_stock.id_product_catalog = product_catalog.id_product_catalog
and product_catalog.id_product = products.id_produto
group by (products.name)');
¿Alguien puede ayudarme?
Solución
Si desea ejecutar la consulta cruda (y para una consulta compleja, me quedaría con el SQL RAW porque estoy más cómodo con eso), lo que necesita hacer es esto:
$value = DB::select('select SUM(transactions.amount) AS total, products.name
from transactions, product_stock, product_catalog, products
where transactions.id_product_stock = product_stock.id_prodct_stock
and product_stock.id_product_catalog = product_catalog.id_product_catalog
and product_catalog.id_product = products.id_produto
group by (products.name)'
);
Aquí está la documentación para usar el método DB::select()
.
DB::raw()
se usa para marcar parte de una expresión de consulta más grande que SQL RAW.Consulte http://laravel.com/docs/queries#raw-expressions Para más detallesejemplos.
Otros consejos
Comprobación rápida de su documentación. Parece que desea ejecutar toda su consulta como una expresión cruda.
http://laravel.com/docs/queries#raw-expressions
hth