0

在 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_topicsskill_idtopic_id

我尝试了许多变体,但我无法正确查询。如果我想获得一个特定主题的所有技能,查询应该是什么样子?


这些型号是:

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

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

1 回答 1

2

好吧,如果我理解正确,您实际上应该获得具有相关技能的主题。像这样的东西:

$topic = Topic::with('skills')->where('slug', $topicSlug)->first();

并通过以下方式访问技能:

foreach ($topic->skills as $skill) {  }
于 2013-04-05T13:32:15.133 回答