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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top