سؤال

لا أستطيع "ترجمة" استعلام 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