Php 使用with()语句的Laravel查询
在如下所示的查询中尝试使用with语句时遇到问题Php 使用with()语句的Laravel查询,php,mysql,laravel,Php,Mysql,Laravel,在如下所示的查询中尝试使用with语句时遇到问题 thePage::select('field1','field2') ->with('pagePhotos') 这个查询很好,但是如果我只想在photoLocation=“Miami”中获取页面照片,该怎么办。此photoLocation字段不在页面模型上,仅在pagePhotos表上 下面是一个黑暗中的刺刀,不起作用,但它显示了我试图达到的逻辑,我希望 thePage::select('field1','field2') ->wi
thePage::select('field1','field2')
->with('pagePhotos')
这个查询很好,但是如果我只想在photoLocation=“Miami”中获取页面照片,该怎么办。此photoLocation字段不在页面模型上,仅在pagePhotos表上
下面是一个黑暗中的刺刀,不起作用,但它显示了我试图达到的逻辑,我希望
thePage::select('field1','field2')
->with(
'pagePhotos'->where('photoLocation','=','Miami')
)->get();
编辑
除了这里的答案/评论之外,我发现这有助于我完善查询
万一有人遇到类似的情况,它可能会有所帮助。使用
whereHas
:
thePage::select('field1','field2')
->with('pagePhotos')
->whereHas('pagePhotos', function($query) {
$query->where('photoLocation', '=', 'Miami');
})
->get();
编辑:
如果您希望在pagePhotos字段中进行选择,而不是
->with('pagePhotos')
是否将参数作为数组传递
->with(['pagePhotos' => function($query) {
$query->select('field1', 'field2');
}])
我认为您应该使用闭包来处理查询
thePage::select('field1','field2')->with(array('pagePhotos' => function($query) {
$query->where('photoLocation','=','Miami');
}))->get();
希望它能帮助您谢谢,这是我想要的。有没有一种简单的方法可以在页面照片字段中进行选择?或者我需要缩小模型本身的范围吗?@weekapaug刚刚发布了一个对我的答案的编辑,以帮助你解决这个问题,我明白了,但这是一个“取而代之”的场景。有没有办法在这一级别从两者中进行选择?我知道我可以在模型级别选择它,但是在这里的查询中呢?这不是一个相反的场景,您可以应用
whereHas
进行筛选,并with
指定要从关系中选择的字段我看到了,我做了->with('pagePhotos'=>函数($query){$query->select('field1',field2')->where('photoLocation','=','Miami');})但我仍然得到所有字段。这是另一个问题,抱歉!!