2017-02-18 4 views
1

Например у меня есть 4 таблицы:
зданий
идентификатор, название, ...
номера
идентификатор, building_id, название, ...
компаний
идентификатор, название, ...
companies_to_buildings
company_id, building_id

и я хочу получить компании из модели комнаты.
Из построения модели я могу сделать что-то вродеbelongsToMany на не первичного поля

class Building extends Model 
{ 
    public function companies(){ 
     return $this->belongsToMany('App\Company', 'company_building'); 
    } 
} 

или

class Building extends Model 
{ 
    public function companies(){ 
     return $this->belongsToMany('App\Company', 'company_building', 'building_id', 'company_id'); 
    } 
} 

, но если я это сделать в комнате модели, она не будет работать. он попытается найти строки в таблице company_to_buildings, где company_to_buildings.building_id = room.id. как я могу получить компании из модели комнаты?

ответ

0

Вы можете использовать hasManyThrough

Пример:

public function series() 
{ 
return $this->hasManyThrough('Series', 'Product'); 
} 
+0

, какие модели следует использовать в hasManyThrought?
функция компания общественной() {вернуть $ this-> hasManyThrough ('App \ Компания', 'App \ Строительство', 'building_id', 'идентификатор', 'building_id');}
создает запрос как
выберите компанию . *, building.building_id от компании inner join building на building.building_id = company.id где company.deleted = 0 и building.building_id в (5)
, но мне нужно что-то вроде:
выбрать компанию. *, от компании внутреннее объединение company_to_buildings на company_to_buildings.company_id = company.id где company.deleted = 0 и company_to_buildings.building_id в (5) –

Смежные вопросы