2015-10-01 47 views
1

我有以下表设置:Laravel 5模型关系多对多

国家(ID)

语言(ID)

country_languages(ID,COUNTRY_ID,LANGUAGE_ID)

在普通的SQL我可以相当容易地使用相应的语言获取所有国家/地区:

SELECT * FROM countries 

INNER JOIN country_languages 
    ON country_languages.country_id = countries.id 

INNER JOIN languages 
    ON languages.id = country_languages.language_id; 

在Laravel(5),采用了以下工作:

在国家模式:

public function countryLanguages() 
{ 
    return $this->hasMany('CountryLanguage'); 
} 

在CountryLanguage型号:

public function language() 
{ 
    return $this->belongsTo('Language'); 
} 

$countries = Country::with('countryLanguages.language');

我想有一个单关系方法languages然而,可以直接调用Country模型。这可能吗?我试过hasManyThrough和其他方法,但迄今没有运气!

+0

你并不需要创建一个CountryLanguage模型的多对多关系。请查看文档http://laravel.com/docs/5.0/eloquent#many-to-many – geoandri

+0

中的相应章节,您正在谈论多对多关系,但您正在实施一对多 –

回答

0

感谢geondri把我推向正确的方向。 这是我结束了这是一个更容易比我的想象:

public function languages() 
{ 
    return $this->belongsToMany('Language', CountryLanguage::getTableName()); 
}