laravel查询

iqjalb3h  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(330)

在尝试对查询使用with语句时遇到问题,如下所示

thePage::select('field1','field2')
->with('pagePhotos')

这个查询工作得很好,但是如果我只想获取photolocation=“miami”的pagephotos呢。此photolocation字段不在页面模型中,仅在pagephotos表中。
下面是一个在黑暗中刺不起作用,但它显示了逻辑,我试图得到,我希望!

thePage::select('field1','field2')
->with(
    'pagePhotos'->where('photoLocation','=','Miami')
)->get();

编辑
除了这里的答案/评论之外,我发现这有助于我完善查询https://stackoverflow.com/a/41436703/7675570
万一有人遇到类似的情况,它会有所帮助。

rkue9o1l

rkue9o1l1#

使用 whereHas :

thePage::select('field1','field2')
    ->with('pagePhotos')
    ->whereHas('pagePhotos', function($query) {
        $query->where('photoLocation', '=', 'Miami');
    })
    ->get();

laravel查询关系是否存在
编辑:
如果您想在pagephotos字段中进行选择,而不是

->with('pagePhotos')

将参数作为数组传递

->with(['pagePhotos' => function($query) {
    $query->select('field1', 'field2');
}])
5hcedyr0

5hcedyr02#

我认为您应该使用闭包来处理查询。

thePage::select('field1','field2')->with(array('pagePhotos' => function($query) {
        $query->where('photoLocation','=','Miami');
}))->get();

希望能对你有所帮助

相关问题