Php 多对多关系以及在Laravel 4中的位置

Php 多对多关系以及在Laravel 4中的位置,php,many-to-many,where,laravel,laravel-4,Php,Many To Many,Where,Laravel,Laravel 4,在Laravel 4中,当处理多对多关系时,我想做以下几点: /* get all skills for one specific topic */ Route::get( '/api/topics/{topicSlug}/skills', function( $topicSlug ) { $skills = Skill::where( 'topic.slug', '=', $topicSlug )->get(); } 现在的问题是topic.slug显然不是skills表中的一

在Laravel 4中,当处理多对多关系时,我想做以下几点:

/* get all skills for one specific topic */
Route::get( '/api/topics/{topicSlug}/skills', function( $topicSlug )
{
    $skills = Skill::where( 'topic.slug', '=', $topicSlug )->get();
}
现在的问题是
topic.slug
显然不是
skills
表中的一列。相反,
slug
topics
表中的一列,通过名为
skills\u topics
(包括
skill\u id
topic\u id
)的透视表与
skills
表相关

我尝试了许多变体,但我就是不能正确地进行查询如果我想获得某个特定主题的所有技能,查询必须是什么样子?


这些模型是:

class Skill extends Eloquent {
    public function topics()
    {
        return $this->belongsToMany( 'Topic' ); 
    }
}


如果我理解正确的话,你应该用相关的技巧来理解这个话题。大概是这样的:

$topic = Topic::with('skills')->where('slug', $topicSlug)->first();
以及通过以下途径获得技能:

foreach ($topic->skills as $skill) {  }

您需要将
topic.slug
更改为仅
slug
。现在,为了得到一个包含$topic所有技能的json响应,我只需要执行
return$topic->skills。我完全走错了路。非常感谢,这真的很有帮助:)是的,我复制/粘贴了你的角色;)
foreach ($topic->skills as $skill) {  }