Это упрощенная версия таблицы в моем проекте.
Элементы таблицы
| id | name |
| ---- | ------ |
| 1 | Apple |
| 2 | Orange |
| 3 | Mango |
Группы цен таблицы
| id | name | deleted |
| ---- | ------- | ------- |
| 1 | Reguler | 0 |
| 2 | VIP | 0 |
| 3 | VVIP | 1 |
Списки цен таблицы
| id | item_id | group_id | price | date |
| ---- | ------- | -------- | ----- | ---------- |
| 1 | 1 | 1 | 100 | 2019-01-20 |
| 2 | 1 | 2 | 120 | 2019-01-20 |
| 3 | 1 | 1 | 110 | 2019-02-01 |
| 4 | 2 | 1 | 80 | 2019-01-31 |
| 5 | 2 | 3 | 120 | 2019-01-10 |
Элементы и PricingGroups имеют много-много взаимосвязей, а сводная таблица имеет вид price_lists
.
Модели: Item
, PricingGroup
, PriceList
Итак, я хочу иметькрасноречивое отношение под названием prices
в модели Item для получения цены для каждой группы PricingGroup.
class Item extends Model {
public function prices() {
// what should I put here??
}
}
Требуемый вывод выглядит следующим образом:
"items": [
{
"id": 1,
"name": "Apple",
"prices": [
{
"id": 1,
"name": "Reguler",
"price": 110
},
{
"id": 2,
"name": "VIP",
"price": 120
}
]
},
{
"id": 2,
"name": "Orange",
"prices": [
{
"id": 1,
"name": "Reguler",
"price": 80
},
{
"id": 2,
"name": "VIP",
"price": 0
}
]
},
{
"id": 3,
"name": "Mango",
"prices": [
{
"id": 1,
"name": "Reguler",
"price": 0
},
{
"id": 2,
"name": "VIP",
"price": 0
}
]
}
]
Примечание:
- Показать активные группы цен с
price=0
, если в price_lists
нет записи о товаре.См. Чехол Orange-VIP и Mango. - Получите самую новую цену.См. Чехол Apple-Reguler.
Возможно ли это?