Php 多对多关系以及在Laravel 4中的位置
在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表中的一
/* 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) { }