아래의 간단한 Propel 쿼리는 국가 코드 (알파벳 순서)에 따라 필터링됩니다. 그러나 상단에 특정 countrycode
보기를 만들기 위해 필터를 수행 할 수 있어야합니다. 이것은 아마도 단일 Propel 쿼리를 사용합니까? (현재)단일 쿼리를 사용하여 결과를 가져오고 순서를 변경합니다.
내 쿼리 : 내 결과가 countrycode 만 당 하나 개의 결과 (중복 불가능)을 가지고
$query = CountryQuery::create()
->filterByCountrycode($countryCode)
->find();
는 이제 단지 하나의 항목을 찾을 것입니다. 그러나 다음 단계에서는 다른 쿼리를 수행하여 모든 결과를 찾아서 병합 할 것이라고 생각했지만 두 쿼리를 수행하면 생산성이 떨어지는 것으로 보입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
예 :
국가 코드가 출력됩니다 영국 위의 쿼리는 다음 GB 경우. 그러나 원하는 결과는 알파벳순으로 국가 목록을 제공하지만 첫 번째 항목은 영국입니다.
난 당신이 행의 낮은 숫자 (100 정도 상대하고 (추측에서) 이후 사용자 정의 귀하의'CountryQuery' 객체의'findWithSpecialOrdering()'기능으로 이런 짓을 했을까 다음은 쿼리입니다). 커스텀 파인더에서'find()'를 호출 한 다음 결과로 나온'PropelCollection'을 특별한 경우에 대해 검색하면됩니다. 찾은 경우 배열에서 제거하고 처음에 팝하십시오. 이것은 모두 메모리에서 이루어 지므로 상당히 빨라야합니다. – halfer
또는이 테이블에'special_order' 컬럼을 추가 할 수 있습니다. 특별한 경우는'0'이고, 그렇지 않은 경우'1'입니다. 이 필드를 주문한 다음 국가 이름을 부차적으로 주문할 수 있습니다. – halfer
@halfer 예. 조용합니다. 나는 그것이 모델에 의해 출력되기 전에 배열을 수정하는 것과 관련하여 상자 밖에서 충분히 생각하지는 않는다. 모범 사례로 간주되는 것은 무엇입니까? 가상 열을 추가하거나 결과 배열을 수정 하시겠습니까? –