在 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
的数据透视表与表相关。skills_topics
skill_id
topic_id
我尝试了许多变体,但我无法正确查询。如果我想获得一个特定主题的所有技能,查询应该是什么样子?
这些型号是:
class Skill extends Eloquent {
public function topics()
{
return $this->belongsToMany( 'Topic' );
}
}
和
class Topic extends Eloquent {
public function skills()
{
return $this->belongsToMany( 'Skill' );
}
}