Laravel 5 Laravel:使用“whereHas”和“with”后关系为空?

Laravel 5 Laravel:使用“whereHas”和“with”后关系为空?,laravel-5,eager-loading,laravel-query-builder,Laravel 5,Eager Loading,Laravel Query Builder,我有一个疑问: $user = \App\User::where('id','=',191) ->whereHas('addresses', function($q){ $q->getByDistance(52.5293878, 13.3416309, 5); }) ->with(['addresses' => function($q){ $

我有一个疑问:

 $user =  \App\User::where('id','=',191)
            ->whereHas('addresses', function($q){
              $q->getByDistance(52.5293878, 13.3416309, 5);
            })
            ->with(['addresses' => function($q){
              $q->getByDistance(52.5293878, 13.3416309, 5);
            }])
            ->get();

dd($user);
仅当id为
191
的用户的地址在范围内时,才会选择该用户,然后他也会立即加载该地址

这是来自类
地址的
scopeGetByDistance
函数

public static function scopeGetByDistance($query,$lat, $lng, $max_distance)
{
  return $query->selectRaw('lat, lng, ( 3959 * acos( cos( radians( '.$lat.') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(lat) ) ) ) AS distance')
               ->having('distance', '<', $max_distance )
               ->orderBy( 'distance', 'ASC' );
}
公共静态函数scopeGetByDistance($query、$lat、$lng、$max_distance)
{
返回$query->selectRaw('lat,lng',3959*acos(弧度('.$lat.))*cos(弧度(lat))*cos(弧度(lng)-弧度('.$lng.))+sin(弧度('.$lat.))*sin(弧度(lat)))作为距离')

->有('distance','我不得不像这样将参考键添加到
selectRaw

return $query->selectRaw('user_id, lat, lng, ( 3959 * acos( cos

请添加
scopeGetByDistance()
的代码。当您仅将
->与('addresses')
一起使用时,这种关系是否有效?@JonasStaudenmeir我改进了这个问题,并添加了
scopeGetByDistance()
函数。如果我仅将
与('addresses')一起使用,则一切正常。