반응형
교리 2 ArrayCollection 필터 방법
지연 로딩을 사용하는 동안 Doctrine 2의 arrayCollection에서 결과를 필터링 할 수 있습니까? 예를 들면
// users = ArrayCollection with User entities containing an "active" property
$customer->users->filter('active' => TRUE)->first()
필터 방법이 실제로 어떻게 사용되는지 확실하지 않습니다.
이 게시물의 Boris Guéry 답변이 도움이 될 수 있습니다. Doctrine 2, 개체 내부 쿼리
$idsToFilter = array(1,2,3,4);
$member->getComments()->filter(
function($entry) use ($idsToFilter) {
return in_array($entry->getId(), $idsToFilter);
}
);
Doctrine은 이제 Criteria
컨텍스트에 따라 SQL 및 PHP로 컬렉션을 필터링하기위한 단일 API를 제공합니다.
최신 정보
이것은 데이터베이스에서 모든 것을 얻지 않고도 받아 들여지는 대답의 결과를 얻을 것입니다.
use Doctrine\Common\Collections\Criteria;
/**
* @ORM\Entity
*/
class Member {
// ...
public function getCommentsFiltered($ids) {
$criteria = Criteria::create()->where(Criteria::expr()->in("id", $ids));
return $this->getComments()->matching($criteria);
}
}
사용 사례는 다음과 같습니다.
$ArrayCollectionOfActiveUsers = $customer->users->filter(function($user) {
return $user->getActive() === TRUE;
});
-> first ()를 추가하면 원하는 것이 아닌 첫 번째 항목 만 반환됩니다.
@ Sjwdavies USE에 전달하는 변수 주위에 ()를 넣어야합니다. in_array return이 이미 부울이므로 단축 할 수도 있습니다.
$member->getComments()->filter( function($entry) use ($idsToFilter) {
return in_array($entry->getId(), $idsToFilter);
});
이 Collection#filter
메서드는 실제로 모든 구성원을 열심히로드합니다. SQL 수준에서의 필터링은 교리 2.3에 추가됩니다.
참고 URL : https://stackoverflow.com/questions/8334356/doctrine-2-arraycollection-filter-method
반응형
'Program Tip' 카테고리의 다른 글
레지스트리에 저장할 때 암호를 암호화하는 가장 쉬운 방법은 무엇입니까? (0) | 2020.12.13 |
---|---|
Java에서 임의의 색상을 만드시겠습니까? (0) | 2020.12.13 |
두 개의 HTML 표 셀 병합 (0) | 2020.12.13 |
Twig 템플릿에서 양식 필드에 오류가 있는지 간단한 확인 (0) | 2020.12.13 |
해시의 값으로 ERB 템플릿 렌더링 (0) | 2020.12.13 |