Laravel 5模型关系多对多

时间:2015-10-01 07:03:14

标签: php laravel eloquent laravel-5.1

我有以下表格设置:

国家/地区(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和其他方法,但到目前为止还没有运气!

1 个答案:

答案 0 :(得分:0)

感谢geondri让我朝着正确的方向前进。 这就是我最终得到的,这比我想象的容易得多:

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