尝试在查询中使用with语句时遇到麻烦,如此处所示
thePage::select('field1','field2')
->with('pagePhotos')
此查询工作正常,但是如果我只想获取photoLocation =“ Miami”的pagePhotos怎么办?该photoLocation字段不在Page Model上,仅在pagePhotos表上。
下面是在黑暗中的一击,这是行不通的,但它显示了我想了解的逻辑,希望!
thePage::select('field1','field2')
->with(
'pagePhotos'->where('photoLocation','=','Miami')
)->get();
编辑
除了这里的答案/评论之外,我发现它还帮助我获得了完美的查询https://stackoverflow.com/a/41436703/7675570
以防万一有人遇到类似情况也可以提供帮助。
答案 0 :(得分:3)
我认为您应该使用闭包来处理查询。
thePage::select('field1','field2')->with(array('pagePhotos' => function($query) {
$query->where('photoLocation','=','Miami');
}))->get();
希望它可以为您提供帮助
答案 1 :(得分:2)
使用whereHas
:
thePage::select('field1','field2')
->with('pagePhotos')
->whereHas('pagePhotos', function($query) {
$query->where('photoLocation', '=', 'Miami');
})
->get();
Laravel Querying Relationship Existence
编辑:
如果要在pagePhotos字段上选择而不是
->with('pagePhotos')
做
->with('pagePhotos' => function($query) {
$query->select('field1', 'field2');
})