отношение сводной таблицы Laravel - PullRequest
0 голосов
/ 18 января 2020

У меня есть следующее отношение:

  1. RAB hasMany продуктов.
  2. продуктов принадлежит ToMany RAB

но эта продукция также имеет много валюты , которые принадлежат одному RAB . это выглядит следующим образом.

table

в модели RAB:

  public function products()
    {
        return $this->belongsToMany('App\ModelKeuangan\ProductsModel', 'rab_products', 'rab_id', 'products_id');
    }

в модели продуктов:

public function rab()
    {
        return $this->belongsToMany('App\ModelUnitKerja\Perencanaan\RabModel', 'rab_products', 'products_id', 'rab_id');
    }

rab_products - это моя промежуточная таблица / таблица соединений.

она отлично работает при синхронизации данных продуктов для RAB. но я не могу понять, как сделать красноречивую модель для синхронизации валюты данных с рабом и продуктами.

мне тоже нужно сделать модель для валюты? если да, то как мне это определить?

Мой план - создать такую ​​сводную таблицу, но могу ли я установить связь внутри сводной таблицы?

class RabProducts extends Pivot {
    //relation function to currency
}

и измените модель моей продукции на что-то вроде:

   public function rab(){
       return $this->belongsToMany('App\ModelUnitKerja\Perencanaan\RabModel')->using('App\RabProducts');
}

1 Ответ

0 голосов
/ 19 января 2020
  1. Создайте модель валюты и добавьте Foreign_key product_id:
php artisan make:model Currency
Создайте один-ко-многим между продуктом и валютой, и вам необходимо добавить product_id в таблицу currencies.

в вашей модели валюты:

    public function product() {
      return $this->belongsTo('App\Product', 'product_id');
    }

В вашей модели продукта:

    public function currencies()
    {
        return $this->hasMany(\App\Currency::class, 'product_id', 'id');
    }

Чтобы вы могли назвать его так:

RAB::with(['products' => function($query) {
    $query->with('currencies');
}])->get();

К сожалению, ключ_языка между products и rabs находится в сводной таблице, вы не можете напрямую создать hasmanythrough с валютой.

Вы можете назвать валюту по продуктам. Или вы можете создать сводную модель , а затем использовать hasmanythrough.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...