2015-10-01 188 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()); 
}