Как получить последнее обновленное значение одной и той же записи для каждого дня, недели, месяца и года в Laravel eloquent? - PullRequest
0 голосов
/ 17 сентября 2018

Это моя таблица product_price: product price table Обратите внимание, что product_id 1 обновляется несколько раз в один и тот же день.Это мой текущий запрос:

$product = ProductPriceModel::where(['product_id' => $request->product_id])->distinct()->latest()->get()->groupBy(function ($date) {
                    return Carbon::parse($date->created_at)->format('Y-m-d');
                });

, который дает мне этот результат:

"data": {
    "productDetails": {
        "2018-09-17": [
            {
                "min_price": 0,
                "max_price": 1150,
                "price_diff": "425"
            },
            {
                "min_price": 100,
                "max_price": 200,
                "price_diff": "-945"
            }
        ],
        "2018-09-10": [
            {
                "min_price": 1070,
                "max_price": 1120,
                "price_diff": "-30"
            },
            {
                "min_price": 1100,
                "max_price": 1150,
                "price_diff": "15"
            },
            {
                "min_price": 1080,
                "max_price": 1140,
                "price_diff": "0"
            }
        ]
    }
}

То, что я ожидаю, это только одна запись для каждой даты.Какие изменения необходимо внести в приведенный выше запрос, чтобы получить ровно одну запись для каждой даты?

1 Ответ

0 голосов
/ 18 сентября 2018

Если вы хотите получить только одну запись, вам нужно использовать first() вместо get(), пожалуйста, попробуйте

$product = ProductPriceModel::where(['product_id' => $request->product_id])->distinct()->latest()->first()->groupBy(function ($date) {
                    return Carbon::parse($date->created_at)->format('Y-m-d');
                });
...