向所有工匠致意。
我找到了解决关系的最佳做法,如下表所示:
id name
1 Apple
2 Google
3 Facebook
...
id name company_id
1 Alex 1
2 Benny 1
3 Tony 2
...
id content staff_id
1 Lorem ipsum A 1
2 Lorem ipsum B 1
3 Lorem ipsum C 5
...
如何定义与雄辩的关系,以便我可以从特定的“公司”中选择所有“帖子”。我可以在'posts'表中声明额外的'company_id'列以获得解决方法。
但我们可以使用eloquent选择如下例子:
$posts = Post::where('staff_id', IN, COMPANY_ID)->get();
提前致谢
答案 0 :(得分:6)
最后,Laravel 4.1提供了这个名为hasManyThrough
的功能! Horray!
答案 1 :(得分:3)
编辑: 我似乎误解了这个问题,你可以急切地加载这样的嵌套关系:
$company = Company::find(COMPANY_ID)->with('staff.posts')->get();
然后你可以遍历它们:
foreach($company->staff() as $staff)
{
foreach($staff->posts() as $post)
{
echo $post->content;
}
}
这两种关系都需要定义。
// models/company.php
public function staff()
{
return $this->hasMany('Staff');
}
和
// models/staff.php
public function posts()
{
return $this->hasMany('Post');
}