2017-11-06 21 views
-2

このMySQLクエリをLaravelのEloquentに書き込むにはどうすればいいですか?MySQLクエリをLaravel Eloquentに変換する方法

SELECT 
    products.pro_code    AS code, 
    products.name    AS product, 
    sum(ppurchases.quantity) AS total_quantity, 
    products.reorder_point  AS reorder_point, 
    products.selling_price  AS selling_price, 
    min(ppurchases.expiry_date) AS nearest_expiry 
FROM `ppurchases` 
    JOIN `products` 
WHERE ppurchases.product_id = products.id 
GROUP BY products.name 

This is how it looks like on mysql query

私は成功することができませんでしたが、次のように書いています。

$products = DB::table('products') 
       ->JOIN('ppurchases','ppurchases.product_id', '=','products.id') 
       ->select('products.pro_code as code','products.name as product','products.reorder_point as reorder_point','products.selling_price as selling_price',DB::raw('min(ppurchases.expiry_date) as nearest_expiry')) 
       ->where('ppurchases.product_id','products.id') 
       ->groupBy('products.name') 
       ->get(); 

This is an error i am getting with my eloquent code

+0

はあなたが説得力のモデルを持っています設定しますか?そうでない場合は、生の表現をint形式で見てください:https://laravel.com/docs/5.5/queries#raw-expressions – pseudoanime

+0

[[緊急]または他の同様のフレーズを、より速い回答を得るためには?](// meta.stackoverflow.com/q/326569) - これはボランティアに対処する理想的な方法ではなく、おそらく答えを得ることに逆効果があるということです。これをあなたの質問にしてください。 – halfer

+0

この作業を何も試みなくても、質問は「広すぎる」として閉じられる可能性があります。近い公式の理由から:適切な答えを特定するのに十分な詳細で特定の問題に限定するために質問を編集してください。 – halfer

答えて

1

使用をあなたが生

を使用しているよう
$products = DB::table('products') 
    ->join('ppurchases', 'ppurchases.product_id', '=', 'products.id') 
    ->select(
     'products.name as product', 
     DB::raw('min(per_ppurchases.expiry_date) as nearest_expiry') 
    ) 
    ->groupBy('products.name') 
    ->get(); 
+0

素晴らしい!私の場合に取り組んだ、ありがとう – Sark

0

編集:新しいテーブル名に更新します。

デフォルトのHomestead sql_mode = only_full_group_byフラグのため、集約されていない列エラーが発生しました。 2さらにMAX(あなたはMIN()、またはAVG()で置き換えることができますを追加すると、トリックを行うように見えた。接頭語あたり

$result = DB::table('per_ppurchases') 
    ->join('per_products', 'per_ppurchases.product_id', '=', 'per_products.id') 
    ->select(
     'per_products.name      as code', 
     'per_products.name      as product', 
     DB::raw('SUM(per_ppurchases.quantity) as total_quantity'), 
     DB::raw('MAX(per_products.reorder_point) as reorder_point'), 
     DB::raw('MAX(per_products.selling_price) as selling_price'), 
     DB::raw('MIN(per_ppurchases.expiry_date) as nearest_expiry') 
    ) 
    ->groupBy('per_products.name') 
    ->get(); 
+0

まだ動作していません、同じエラー – Sark

関連する問題