Laravel:通过父母slu get得到孩子

时间:2016-11-27 18:35:58

标签: laravel-5

我有一个Section和一个Picture模型,具有一对多的关系(Section可以有很多图片; Picture只有一个Section)

我可以在给定节ID:

的情况下检索所有照片
$section = '1';
$records = Picture::where('section_id', $section)->orderBy('position')->get();

如果我想通过Section slug(或名称)检索图片怎么办? 所有这些例子都不起作用:

$section = 'wedding';
$records = Picture::where('sections.slug', $section)->orderBy('position')->get(); // nope
$records = Picture::where($this->section()->slug, $section)->orderBy('position')->get(); // nope

我试图在Laravel文档中搜索,但我没有得到这个案例...... 谢谢

1 个答案:

答案 0 :(得分:2)

对于查询关系,您应该使用whereHas函数。

如果您的关系在section()模型中命名为Picture,则您的查询应为:

$section = 'wedding';

$records = Picture::whereHas('section', function($q) use($section) {
                            $q->where('slug', $section);
                        })
                        ->orderBy('position')
                        ->get();

Docs