Отношения Laravel — 3-сторонняя таблица

У меня есть 3 модели: Basket, Product а также Asset,

Basket может содержать много Assetс, и один актив может появляться в нескольких Baskets.

Product может иметь много Assetс, но Asset также может быть назначен более чем одному Product,

Цель состоит в том, чтобы получить Assetс в Basket все еще зная, какие Product это было добавлено от.


Структура таблицы, которую я представляю себе, такова:

-------------------------------------
| basket_id | asset_id | product_id |
-------------------------------------
|         1 |        1 |          1 |
|         1 |        3 |          1 |
|         1 |       15 |          2 |
|         2 |       23 |          1 |
|         2 |        3 |          1 |
|         3 |       79 |          3 |
-------------------------------------

Я также предполагаю настройку модели примерно так:

class Basket extends Eloquent {
public function assets() {
return $this->belongsToMany('Asset');
}
}

class Product extends Eloquent {
public function assets() {
return $this->belongsToMany('Asset');
}
}

class Asset extends Eloquent {
public function products() {
return $this->belongsToMany('Product');
}

public function product() {
// This should return the product from the product_id column
}
}

Я не уверен, как идти о написании Asset::product() так что он возвращает соответствующий Product,

Я хотел бы назвать что-то вроде Basket::find(1)->assets()->first()->product; получить продукт, из которого был добавлен первый актив в корзину.

0

Решение

Вот небольшой кусок, который делает то, что вам нужно

https://github.com/jarektkaczyk/Eloquent-triple-pivot

и благодаря вашему пиару пакет на packagist:

https://packagist.org/packages/jarektkaczyk/eloquent-triple-pivot

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]