我不能将下面的SQL查询翻译成Laravel,我如何制作这个?

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

我尝试了这个(返回错误):

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

和这个(返回空):

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

任何人都可以帮助我?

有帮助吗?

解决方案

如果您想运行原始查询(对于像这样的复杂查询,我会坚持使用原始的SQL,因为我更舒服),你需要做的就是这样:

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

文件用于使用DB::select()方法。

DB::raw()用于将较大查询表达式的部分标记为原始SQL。查看 http://laravel.com/docs/queries#raw-expressions 详细信息例子。

其他提示

快速检查他们的文档看起来你想要将整个查询作为原始表达式运行。

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

hth

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top