私はLaravelでこれを達成したい:Laravel Eloquentテーブルではなくクエリで結合する方法を教えてください。
SELECT * FROM products JOIN
(SELECT product_id, MIN(price) AS lowest FROM prices GROUP BY product_id) AS q1
ON products.id = q1.product_id
ORDER BY q1.lowest;
私はこれを書いたが、明らかに間違って何かがある:
$products = new Product();
$products = $products->join(
Price::whereNotNull('price')->select('product_id', DB::raw('min(price) as lowest'))->groupBy('product_id'), 'products.id', '=', 'product_id'
)->orderBy('lowest')->get();
私が得たエラーは:
ErrorException in Grammar.php line 39:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string.
私は現在回避策としてjoin(DB::raw('(SELECT product_id, MIN(price) AS lowest FROM prices WHERE price IS NOT NULL GROUP BY product_id) AS q1'), 'products.id', '=', 'q1.product_id')
を使用しています。この方法を奇妙なやり方でやってみるのはどうでしょう?ありがとう。
あなたは何を製品に与えたいですか?私のSQLスキルが低いので何もしていないからです。 –
@AchrafKhouadja私は私の 'products'テーブルを最低価格で注文したい – Harrison