Вопрос

Я не могу "перевести" приведенный ниже 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