如何在 laravel eloquent 上的 select 中制作 select?

How can I make select in select on laravel eloquent?

我用laravel 5.3

我的 sql 查询是这样的:

SELECT * 
FROM (
    SELECT *
    FROM products 
    WHERE `status` = 1 AND `stock` > 0 AND category_id = 5
    ORDER BY updated_at DESC
    LIMIT 4
) AS product
GROUP BY store_id

我想改成laraveleloquent

但我还是一头雾水

我该怎么做?

如果您的查询过于复杂,您可以 laravel RAW 查询语法,例如:

$data = DB::select(DB::raw('your query here'));

它将在指定的 table 和 returns 结果集(如果有)上触发您的原始查询。

Reference

如果您有产品型号,可以运行

$products = Product::where('status', 1)
->where('stock', '>', 0)
->where('category_id', '=', 5)
->groupBy('store_id')
->orderBy('updated_at', 'desc')
->take(4)
->get();

我认为这应该会给你相同的结果,因为你从派生的 table 中提取了所有内容。