Как я могу установить связь между моими тремя моделями, когда модель дистрибьютора и продукта напрямую связаны с моделью продукта дистрибьютора - PullRequest
0 голосов
/ 05 февраля 2020

Таблица дистрибьютора - id Таблица продукта - id Таблица Distributorprocuct - идентификатор_дистектора, product_id

Модель дистрибьютора -

public function product() { return $this->hasMany(Distributorproduct::class); }

Модель продукта -

public function distributor() { return $this->hasMany(Distributorproduct::class); }

Модель продукта дистрибьютора -

public function distributor() { return $this->belongsTo(Distributor::class); }

public function product() { return $this->belongsTo(Product::class); }

Если я напишу $product->distributor, тогда я получу все детали о продукте дистрибьютора, но мне нужны детали дистрибьютора, а не продукта дистрибьютора.

Если я напишу $distributor->product, тогда это даст мне все детали о продукте дистрибьютора, но мне нужны данные о продукте, а не о продукте дистрибьютора.

Заранее спасибо ...

1 Ответ

1 голос
/ 05 февраля 2020

Мне не ясно, каковы отношения между Продуктом, Дистрибьютором, Продуктом и Дистрибьютором, но я думаю, что вы хотите указать другой тип отношений между Дистрибьютором и Продуктом (и Продуктом -> Дистрибьютором). В вашем модальном классе Distributor вы можете попробовать определить метод вашего продукта следующим образом:

public function product() { 
    return $this->hasOneThrough(Product::class, Distributorproduct::class); 
}

и метод распространителя в модальном классе Product следующим образом:

public function distributor() { 
    return $this->hasOneThrough(Distributor::class, Distributorproduct::class); 
}

Но ваш пробег может отличаться этот тип отношений приемлем только в том случае, если у Продукта есть один дистрибьютор (вероятно), а у дистрибьютора один продукт (вряд ли, я думаю).

Документы Laravel имеют довольно хорошую документацию о отношения . Особенно подробно рассматриваются Имеет один сквозной и Имеет много сквозных абзацев.

...