Объединение двух связей belongsToMany в одну Laravel

294
20 мая 2017, 20:30

Здравствуйте. Подскажите, кто может. У меня есть две связи - компании продавцы и компании застройщики

public function companies_builder() {
    return $this->belongsToMany('App\Models\Company', 'pivot_company_buildings_builder', 'building_id', 'company_id');
}
public function companies_seller() {
    return $this->belongsToMany('App\Models\Company', 'pivot_company_buildings_seller', 'building_id', 'company_id');
}

Мне нужно сделать связь которая объединяет эти две таблицы. По типу:

public function all_buildings()
{
   return ...
}

Помогите кто знает. Как это сделать?

Answer 1

На мой взгляд лучшим решением будет создание одной таблицы pivot_buildings_companies, в которую помимо полей внешних ключей добавить поле указывающее на тип связи (застройщик/продавец)  Тогда в классе Building вы сможете описать метод:

public function companies() {
    return $this->belongsToMany('App\Models\Company', 'pivot_buildings_companies', 'building_id', 'company_id');
}
public function companies_builder() {
    return $this->companies()->wherePivot('type', 'builder');
}
public function companies_seller() {
    return $this->companies()->wherePivot('type', 'seller');
}
READ ALSO
Не переносится строка в коде php

Не переносится строка в коде php

Есть простенький кодНа почту приходит $message в одну строку

235
Как вывести static переменную из функции?

Как вывести static переменную из функции?

Хочу чтобы переменная возвращала количество вызовов функции

295
Генератор уникальных ID

Генератор уникальных ID

Нужен код генератора уникальных IDПоискал в интернете

243
'-' в названии папок и namespace

'-' в названии папок и namespace

В моем проекте между словами в названиях папок есть '-'Т

196