2017-05-04 21 views
2

나는 User 엔티티와 Usecase 엔티티를 가지고 있습니다. 이 두 엔티티는 ManyToMany 연관과 연관되어 있지만이 연관에는 "환경"이라는 또 다른 속성이 있습니다. 이 관계를 구현하기 위해 User와의 ManyToOne 관계, Usecase와의 ManyToOne 관계 및 추가 필드 인 "환경"이있는 UserUsecase라는 엔티티도 있습니다. 데이터베이스에서 사용자를 가져 오는 경우 사용법도 가져 오므로 사용자는 사용자가 가지고있는 모든 용도를 나타내는 UserUsecase 유형의 객체로 이루어진 ArrayCollection을가집니다. 내가하고 싶은 것은 usecase_id에 의해이 ArrayCollection을 필터링하는 것이다. 클래스 UserUsecase 심지어 필드 쓰임새가 형식의 개체입니다symfony : 연관된 엔티티 ID로 필터 ArrayCollection

public function filterUsecases($usecase_id){ 
    $criteria = Criteria::create(); 
    $criteria->where(Criteria::expr()->eq('usecase', $usecase_id)); 
    return $this->userUsecases->matching($criteria); 
} 

그것은 나에게 의미가 있습니다 : 그래서 User 클래스 안에이 시도

class UserUsecase 
{ 
/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="userUsecases") 
* @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
*/ 
protected $user; 

/** 
* @ORM\ManyToOne(targetEntity="Usecase", inversedBy="userUsecases") 
* @ORM\JoinColumn(name="usecase_id", referencedColumnName="id") 
*/ 
protected $usecase; 

/** 
* @ORM\Column(type="integer") 
*/ 
protected $environment; 
} 

다음 UserUsecase 클래스는 아래의 구조를 가지고 Usecase, 그것은 id로 해결되어야하고 방정식은 id가 일치 할 때 유지됩니다. 그래도 작동하지 않는 것 같아서이 필터링을 구현하는 방법을 찾을 수 없습니다. 이런 식으로 할 수 있습니까? 나는 내가 원하는 것을 정확하게하는 것으로 보이는 관련 기사를 찾았지만 이것은 나의 경우에는 효과가 없다. Here이 기사입니다! 내가 뭔가 잘못하고 있는거야?

미리 감사드립니다.

답변

1

당신은 사용자 당 많은 많은 사용 사례 (단위 : 천원) 내가 추천이 없다면 그런 다음

public function filterUsecases(Usecase $useCase){ 
    $criteria = Criteria::create(); 
    $criteria->where(Criteria::expr()->eq('usecase', $useCase)); 
    return $this->userUsecases->matching($criteria); 
} 

:

$user->filterUsecases($useCase); 

또는 통과 기준을

$user->filterUsecases($em->getReference(Usecase::class, $id));