2011-04-22 3 views
2

내 질문에 대한 답변이 매우 분명하면 사과드립니다. 나는 Symfony를 처음 사용하고 있으므로, SO와 똑같은 문제로 다른 질문을 찾을 수 없었습니다. 따라서 질문을 게시하고 있습니다. (그리고 구글도별로 도움이되지 못했지만, 다시 말하면 나는 심포니의 용어에 대해 잘 알고 있지 않다. 그래서 내 질문에 나쁘게 말을했을지 모른다.)관리자 양식에서 일대 다 관계로 고생하는 것

그래서, 바로 그 지점으로. schema.yml 파일 :

user: 
    id: 
    email: { type: varchar, size: 255, required: true } 
    ... # etc. 

partner: 
    user_id: { type: integer, foreignTable: user, foreignReference: id } 

(BTW, 심포니 1.3 및 추진 1.4 사용).

그래서 나는 $ 사용자 -> getPartners()를 가지고$ 파트너십> GETUSERID() 방법 (나는 당신의 FK 참조 된 테이블의 PK 인 경우, 추진 세력은 단발성 어딘가에 읽기에도 불구하고 발생 one-to-one 관계이지만, 나는 그것을 잘못 이해하지 않는 한 일대 다 (one-to-many) 관측을한다. 벌금. 그러나, 나는 사용자를 편집 할 수있는 관리자 모듈을 가지고 있으며, 현재 Symfony가 "User/edit"형식으로 복수 선택 파트너 목록을 표시하게하는 방법을 정확히 이해하는 데 어려움을 겪고 있습니다 (이중 목록은 괜찮을 것입니다 너무).

애플 리케이션/백엔드/모듈/사용자에 "파트너"와 "partner_list을"퍼팅과 시도/generator.yml I 성공적으로 * 피어 :: getXXXChoices를 통해 부울 및 정전기 선택 [추가 (()] 필드), 오류 만 "위젯 '파트너'가 존재하지 않습니다.

양식 클래스를 편집 할 수는 있지만 "선택 사항"이 정적이 아니기 때문에 Propel이 "다중 = true"를 사용하여 일대 다 시각적 관계를 형성하는 방법을 알 수 없습니다. 다른 테이블에 의존합니다.

어떻게하면 되나요? 중요한 것을 생략 한 경우 추가 정보를 요청하십시오.

감사합니다.

답변

1

나는 한 번 같은 문제를 겪었으므로이 문제에 대한 나의 해결책이다. Symfony는 이러한 상황에서 매우 똑똑하지 않으므로 조금 도와 주어야합니다.

user: 
    id: 
    email: { type: varchar, size: 255, required: true } 
    ... # etc. 

partner: 
    user_id: { type: integer, foreignTable: user, foreignReference: id } 

것 심포니는 정말 간단 있다는 것입니다 및 추진 폼을 생성하고 생성 데이터를 저장하기 위해 submition 양식을 구문 분석 할 때, 그것은 USER_ID 필드와 같은 해석 : 당신이 설명하는 모델은 perfeclty 문제의 좋은 관계 모델 해석 그것이 정상적인 필드라면 (일대 다 방식이 아님).

symfony로 만든 다중 선택과 그 뒤에있는 모든 로직을 실제로 생성하려면이 두 클래스 사이에 다 대다 관계를 만들어야합니다. 당신은 사용자 형태로 partner_list 위젯 또한 파트너 형태로 USER_LIST 위젯을해야합니다

user: 
    id: 
    email: { type: varchar, size: 255, required: true } 
    ... # etc. 

partner: 
    user_id: { type: integer, foreignTable: user, foreignReference: id } 

user_partner: 
    user_id: { type: integer , foreignTable: user, foreignReference: id, primaryKey: true} 
    partner_id: { type: integer , foreignTable: partner, foreignReference: id, primaryKey: true} 

이 방법 : 스키마는 다음과 같이 결국해야한다. 나는 항상 내가 필요로하지 않는 것을 풀어 놓았고 실제로 매력처럼 작동한다.

다른 솔루션은 UserForm을 수정하고 partner_ids multiselect 위젯을 추가 한 다음 doSave 메소드를 수정하여 다중 선택 저장 로직을 처리 할 수 ​​있기 때문에 모델 구현에 가장 적합한 솔루션을 조금 더 복잡하게 만듭니다 (인스턴스를 만들고이를 사용자와 연결하여 저장하고 선택한 인스턴스도 제거합니다).

+0

감사합니다.내일 한번 해봐! 그것이 효과가 있다면, 나는 이것을 답으로 표시 할 것입니다. ;) – dimitarvp

+0

죄송합니다. 시간이 좀 걸렸지 만 답변이 답변으로 표시되어 있습니다. :) 도와 주셔서 감사합니다! – dimitarvp

+0

안녕하세요 @ 디 미토 코 아무 문제 없기 때문에 우리 모두 여기 있습니다. 다음 질문을 보길 바랍니다! – guiman

관련 문제