2012-08-10 1 views
1

symfony2에서 교리와 함께 손님, 장소, 이벤트 및 게스트 카테고리로 응용 프로그램을 만들고 있습니다. symfony2로 3 주간 만 만져 본 나는 SQL의 모든 엔티티에 대한 스키마 테이블을 만들었고, 의존성 사이에서 각각의 엔티티에 대한 스키마 테이블을 만들었습니다. 내 문제는 실용보다 이론적이다.모든 사용자는 symfony2에서 개인 교리 항목을 어떻게 가질 수 있습니까?

보안 용 번들 (책의 보안 번들 또는 FOSUserBundle)을 만듭니다. 그 때 나는 세 가지 역할 설정합니다 :

  • 관리자
  • 주최자를
  • 고객

각 고객은 자신의 프로필이되며, 각 주최자는 자신의 손님에게 "연결"됩니다 - 간단한에서 Organizer X는 Guest X-1, X-2 등 만보고 의사 소통을하며 Y-1을 볼 수 없습니다. 그런 질문을하는 것이 아주 간단하고 재밌을 것 같지만 ... 나는 스스로 가르친다. :)

질문은 : 어떻게 주최자와 그 손님들에게 이벤트를 첨부 할 수 있습니까? 내가 상상할 수있는 가장 간단한 방법은 모든 게스트, 이벤트, 카테고리, 이벤트에 대해 고유 한 토큰 (또는 자체 생성 코드)을 설정하고 테이블을 조인하는 것입니다.

토큰이있는 게스트 John = vsfv2435r3frwf24t5grf에 이벤트/카테고리/장소가있는 경우 이벤트 또는 범주 또는 장소에서 동일한 토큰을 찾아 사용 권한을 할당하십시오.

논리적이거나 어리석은가요?

답변

0

당신은 할 수 나타나서에 대한 데이터베이스의 심포니 문서들을 쉽게 설명하는 일의 종류를 수행 할 수있게된다 OrganiserGuest에 대한 교차 테이블을 만들어 참석/구성하는 이벤트를 나타냅니다. 각 GuestOrganiser으로 교차 표를 가질 수도 있습니다. 이 방법을 사용하면 쉽게 주최자를 손님에게 할당하고이를 통해 필터링 할 수 있습니다 (손님이 여러 이벤트에 참석할 수 있다고 가정합니다). 그것은 다음과 같이 것 교리 세계에서

:

이벤트

... 

/** 
* @ORM\ManyToMany(targetEntity="Organiser", inversedBy="events") 
*/ 
protected $organisers; 

/** 
* @ORM\ManyToMany(targetEntity="Guest", inversedBy="events") 
*/ 
protected $guests; 

주최자

... 

/** 
* @ORM\ManyToMany(targetEntity="Event", mappedBy="organisers") 
*/ 
protected $events; 

/** 
* @ORM\ManyToMany(targetEntity="Guest", mappedBy="organisers") 
*/ 
protected $guests; 

고객

... 

/** 
* @ORM\ManyToMany(targetEntity="Event", mappedBy="guests") 
*/ 
protected $events; 

/** 
* @ORM\ManyToMany(targetEntity="Organiser", inversedBy="guests") 
*/ 
protected $organisers; 
+0

나는 이미이 작업을 수행했습니다. 나는 나의 설명에 분명하지 않았을지도 모른다.관계를 성공적으로 설정하고 db 스키마를 만들었습니다. 질문은 다음과 같습니다. db에서 당신은 입니다. 1. john john 2. jim jim 주최자로. John John이 로그인하여 일부 손님을 삽입 할 수 있습니다. 그는 로그 아웃하고 Jim Jim이 로그인합니다. 그는 일부 게스트도 삽입합니다. 어떤 항목이 누구를위한 것인지 시스템에서 어떻게 알 수 있습니까? 사실, ADMIN ROLE이 jim jim 또는 john john에게 주어지면 엔트리를 삽입하거나 보거나 삭제하는 것이됩니다. 각자 만든 특정 항목에 대한 사용 권한은 어떻게 부여합니까? – Radolino

+0

또는보기 권한이있는 모든 사용자는 모든 항목을 볼 수 있습니다. – Radolino

+0

새 테이블을 만들어야겠습니까? 아니면 선택 쿼리에서 지워 집니까? – Radolino

관련 문제