Question

Je ne parviens pas à « traduire » la requête SQL ci-dessous en Laravel, comment puis-je y parvenir ?

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);

J'ai essayé ceci (retourne une erreur) :

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')]);

Et ceci (retourne vide) :

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)');

Est-ce que quelqu'un peut m'aider?

Était-ce utile?

La solution

Si vous souhaitez exécuter la requête brute (et pour une requête complexe comme celle-ci, je m'en tiendrai au SQL brut car je suis plus à l'aise avec cela), ce que vous devez faire est ceci :

$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)'
);

Voici la documentation pour l'utilisation du DB::select() méthode.

DB::raw() est utilisé pour marquer partie d'une expression de requête plus grande sous forme de SQL brut.Voir http://laravel.com/docs/queries#raw-expressions pour plus de détails et d'exemples.

Autres conseils

Vérification rapide de leur documentation On dirait que vous souhaitez exécuter toute votre requête en tant qu'expression brute.

http://laravel.com/docs/queries#raw-expressions

htth

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top