0
laravel의 쿼리 작성기를 사용하여 데이터베이스에서 위치를 가져옵니다. 두 테이블을 조인 한 다음 결과를 위치별로 쿼리해야합니다. 조인을 추가 할 때까지 모든 것이 잘 동작했습니다.Laravel 쿼리 작성기가 selectRaw와 작동하지 않습니다.
난 그냥
$locations = DB::table('locations')
->join('charities', 'locations.charity', '=', 'charities.charity')
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
을 할 경우 그 다음은 내가 필요로하는 두 테이블의 내용을 반환합니다. 내가 할 경우
$locations = DB::table('locations')
->select('locations.*')
->selectRaw('(3959 * acos(cos(radians(?)) *
cos(radians(latitude))
* cos(radians(longitude) - radians(?)
) + sin(radians(?)) *
sin(radians(latitude)))
) AS distance', [$lat, $lng, $lat])
->havingRaw("distance < ?", [$max_distance])
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
그런 다음 위치 테이블의 내용을 가져 와서 필터가 올바르게 작동합니다.
두 가지를 모두 넣었으며 오류가없는 위치의 콘텐츠 만 반환하고 자선 테이블은 조인되지 않았습니다.
$locations = DB::table('locations')
->join('charities', 'locations.charity', '=', 'charities.charity')
->select('locations.*')
->selectRaw('(3959 * acos(cos(radians(?)) *
cos(radians(latitude))
* cos(radians(longitude) - radians(?)
) + sin(radians(?)) *
sin(radians(latitude)))
) AS distance', [$lat, $lng, $lat])
->havingRaw("distance < ?", [$max_distance])
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
모든 열에 대해 테이블의 이름을 지정하십시오. – MosCH
자선 단체 테이블에서 오는 유일한 것은 이미 가입 장소와 자선 로고가있는 자선 단체 이름입니다. 그 외 모든 것은 위치 탭에서옵니다. – craigb88
죄송합니다. 게시물을 제대로 읽지 못했습니다. 각 열의 테이블을 지정 했으므로 매력이 있습니다! 감사 – craigb88