배열 컬렉션을 필터링하는 더 좋은 방법이 있는지 알아 내는데 어려움이 있습니다. . 이 내 코드입니다 :사전 계산을 통한 교리 필터링
$searchResults = $this->get('app.user.repository')->getUsersBySearchData($searchDetails);
$searchResults->filter(
function($user) use ($searchDetails){
$distance = $this->get('app.distance.calculator')->calculateDistance($user->getCity(), $searchDetails->getCity());
$distanceToTravel = $user->getDistanceToTravel();
if($distance < $distanceToTravel)
return true;
return false;
}
);
이 $에서 모든 사용자가 이미 인출 모음에서 필터링의 SearchResult를 반환합니다.
사용자가 자신의 프로필에 입력 한 거리와 검색 양식에 입력 된 도시가 아닌 모든 사용자 양식 데이터베이스를 가져와야합니다. 거리가 초과되지 않았는지 확인하려면 검색 양식에 입력 된 위치와 사용자 위치 사이의 거리를 계산하고 그 거리를 사용자 프로필 거리와 비교해야합니다.
데이터베이스 수준에서 이러한 종류의 필터링을 수행 할 수 있습니까? 기준 API를 살펴 보았지만이를 수행하는 방법을 알지 못했습니다.
도움 주셔서 감사합니다. 나는 더 나은 설명을 위해 질문을 편집했다. 제안 사항이 계속 적용되는지 확인하십시오. – 3ND
예 제안이 여전히 적용됩니다. 조금만 제 질문을 업데이트했습니다. '경도'와 '위도'열을 표에 추가하면 거리로 검색 할 수 있습니다. 당신이 어떻게 할 수 있는지에 대한 예제는 내 답변의 링크를 참조하십시오. – Wilt
할거야. 고마워. – 3ND