문제

아래 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이 더 편하기 때문에 원시 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 <./ P>

hth

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top