Laravel SQL Query difficile
Domanda
Non riesco a "tradurre" la query SQL sotto per Lariavel, come posso farlo?
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);
.
Ho provato questo (errore di ritorno):
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')]);
.
E questo (ritorna vuota):
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)');
.
Chiunque può aiutarmi?
Soluzione
Se si desidera eseguire la query di radice (e per una query complessa come questa, avrei attaccato con il SQL grezzo perché sono più a mio agio con questo), cosa devi fare è questo:
$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)'
);
.
Ecco la documentazione per l'uso del metodo DB::select()
.
DB::raw()
viene utilizzato per contrassegnare Part di un'espressione di query più grande come SQL RAW.Vedi http://laravel.com/docs/queries#raw-expressions per i dettagli &Esempi.
Altri suggerimenti
Controllo rapido La loro documentazione Sembra che tu voglia eseguire l'intera query come espressione prima.
http://laravel.com/docs/queries#raw-expressions .
HTH