Symfony2에서 엔티티의 기본 / 보조 / 정상 상태를 처리하는 방법

벤자민 비손

저는 응용 프로그램을 개발 중이며 다음을 발견했습니다. Contact라는 엔티티가 있고 해당 연락처는 회사에 속하고 회사에는 기본 연락처와 보조 연락처가 있으며 나머지 연락처도 정상으로 지정했다고 가정 해 보겠습니다. .

제 질문은 엔터티 속성과 양식 처리에 대해 말할 때 이에 대한 가장 좋은 접근 방식은 무엇입니까? 나는 두 가지에 대해 그래도 :

  1. 회사 엔터티에 PrimaryContact 및 SecondaryContact라는 필드가 2 개 있고 연락처라는 속성과 일대 다 관계도 있습니다.

이 옵션에 대해 내가 싫어하는 (또는 100 % 방법이 아님)은 Contact 엔터티에서 2 개의 일대일 속성 각각에 대해 inversedBy 필드가 필요하고 또한 1 개에 대해 1 개가 필요하다는 것입니다. 다 대다 관계와 내 개인적인 생각은 이것이 목적 상 다소 지저분하다는 것입니다.

  1. 기본, 보조 또는 일반인 경우 보유 할 Type이라는 Contact 엔터티에 속성이 있고 연락처와 관련이있는 Company 메서드에서 속성을 수정하고 getPrimaryContact, getSecondaryContact 등을 추가합니다.

이 옵션이 마음에 들지 않는 점은 Company에 대해 매핑되지 않은 2 개의 속성이 필요하고 원활하게 작동하려면 양식 유형에서 많은 작업을 수행해야한다는 것입니다.

내 질문은이 구조에 대한 최선의 접근 방식과 양식 및 이러한 종속성을 처리하는 방법입니다. 이것이 충분히 명확하지 않은 경우 알려 주시면 시간을내어 코드와 이미지로 예제를 준비하겠습니다.

벤자민 비손

@Cerad 덕분에 이것은 내가 취한 다음 접근 방식입니다.

  1. 모든 연락처를 보관할 회사에 OneToMany 속성이 있습니다.
  2. getPrimaryContact / setPrimaryContact 메서드를 구현하고 모든 연락처를 반복하고 원하는 유형 중 하나를 검색했습니다. 보조도 마찬가지였습니다.
  3. 회사의 양식 유형에서 내 문제는 '매핑 됨'=> '거짓'옵션이 있다는 것이 었는데, SF2가 이러한 메소드로 이동해야한다는 것을 알고있는 게터 및 세터를 구현했기 때문에이 옵션을 제거했습니다.

`

<?php

namespace XYZ\Entity;

/**
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks()
 */
class Company
{
    ... 
    /**
     * @ORM\OneToMany(targetEntity="\XYZ\Entity\Contact", mappedBy="company", cascade={"persist", "remove"})
     */
    private $contacts;

    public function getPrimaryContact() { ... }
    public function setPrimaryContact(Contact $contact) { //Set the type of $contact and add it $this->addContact($contact) }
    public function getSecondaryContact() { ... }    
    public function setSecondaryContact(Contact $contact) { //Set the type of $contact and add it $this->addContact($contact) }

}`

그리고 양식 유형의 경우 다음이 있습니다.

`

class CompanyType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
            ...
            ->add('primaryContact', new ContactType())
            ->add('secondaryContact', new ContactType())
    }

    ...
}`

이 세트를 사용하면 모든 것이 원활하게 실행되며 많은 어려움없이 CRUD를 수행 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Symfony2 엔티티에서 상속 할 때 @ asset / notblank 제약 조건을 제거하는 방법

분류에서Dev

하위 엔티티의 필드를 기반으로 Hazelcast 맵에서 엔티티를 가져 오는 방법

분류에서Dev

특정 조건에 따라 CRM 엔터티의 "상태 이유"필드를 자동 업데이트하는 방법은 무엇입니까?

분류에서Dev

엔티티의 상위 컨텍스트에 대한 참조를 가져 오는 방법

분류에서Dev

Symfony2를 사용하여 상속 자식 엔티티를 UserInterface로 설정하는 방법

분류에서Dev

값을 업데이트 할 수 없음 : 엔티티의 상태를 '수정 됨'으로 변경하는 동안 '기본 키'에 임시 값이 있습니다.

분류에서Dev

Doctrine2 + Symfony2 : Symfony2에서 네임 스페이스가 지정된 Doctrine 엔티티를 사용하는 방법은 무엇입니까?

분류에서Dev

Symfony2에서 엔티티 유형의 ID를 변경하는 방법은 무엇입니까?

분류에서Dev

Symfony2에서 확장 된 엔티티를 이해하는 방법

분류에서Dev

도메인 기반 설계-상위 엔티티에 대한 엔티티의 하위 순서

분류에서Dev

Symfony2 Doctrine, 조건 하에서 db의 엔티티 표시

분류에서Dev

MagicalRecord에서 엔티티의 기본 키를 변경하는 방법은 무엇입니까?

분류에서Dev

하나의 엔티티가 동일한 엔티티 유형의 2 개를 참조하는 엔티티 관계?

분류에서Dev

런타임에서 Marklogic 엔티티 정의를 검색하는 방법

분류에서Dev

엔티티를 기본값으로 설정 [symfony2]

분류에서Dev

Watson Assistant-특정 엔티티의 크기를 가져 오는 방법

분류에서Dev

보기 모델이 엔티티 프레임 워크의 모델에서 상속 할 수없는 이유

분류에서Dev

symfony2 양식으로 제출 된 엔티티의 ID를 얻는 방법

분류에서Dev

뷰포트에서 brep 엔티티의 경계 상자를 그리는 방법은 무엇입니까?

분류에서Dev

Symfony2 다른 엔티티에있는 엔티티의 엔티티 가져 오기

분류에서Dev

기본적으로 기본 엔터티에서 자식 개체 값의 합계를 가져 오는 방법

분류에서Dev

Symfony2 CRUD는 "CRUD 생성기는 엔티티 개체에 기본 키 필드가 있다고 예상합니다 ..."를 생성합니다.

분류에서Dev

2 개의 하위 엔티티를 기준으로 그룹화하고이 두 하위 엔티티의 합계를 얻는 방법은 무엇입니까?

분류에서Dev

PHP의 DDD의 경우 루트가 아닌 집계의 엔티티에 대한 메서드를 정확히 보호하는 방법은 무엇입니까?

분류에서Dev

AngularJS에서 기본 폴백 상태로 중첩 상태를 설정하는 방법

분류에서Dev

하나의 Symfony 양식에서 두 엔티티를 매핑하는 방법

분류에서Dev

Symfony 3 : 엔티티를 동적으로 조작하는 방법?

분류에서Dev

기본 머티리얼 색상 정의를 변경하는 방법이 있습니까?

분류에서Dev

Cassandra에서 상수 파티션 키를 정의하는 방법

Related 관련 기사

  1. 1

    Symfony2 엔티티에서 상속 할 때 @ asset / notblank 제약 조건을 제거하는 방법

  2. 2

    하위 엔티티의 필드를 기반으로 Hazelcast 맵에서 엔티티를 가져 오는 방법

  3. 3

    특정 조건에 따라 CRM 엔터티의 "상태 이유"필드를 자동 업데이트하는 방법은 무엇입니까?

  4. 4

    엔티티의 상위 컨텍스트에 대한 참조를 가져 오는 방법

  5. 5

    Symfony2를 사용하여 상속 자식 엔티티를 UserInterface로 설정하는 방법

  6. 6

    값을 업데이트 할 수 없음 : 엔티티의 상태를 '수정 됨'으로 변경하는 동안 '기본 키'에 임시 값이 있습니다.

  7. 7

    Doctrine2 + Symfony2 : Symfony2에서 네임 스페이스가 지정된 Doctrine 엔티티를 사용하는 방법은 무엇입니까?

  8. 8

    Symfony2에서 엔티티 유형의 ID를 변경하는 방법은 무엇입니까?

  9. 9

    Symfony2에서 확장 된 엔티티를 이해하는 방법

  10. 10

    도메인 기반 설계-상위 엔티티에 대한 엔티티의 하위 순서

  11. 11

    Symfony2 Doctrine, 조건 하에서 db의 엔티티 표시

  12. 12

    MagicalRecord에서 엔티티의 기본 키를 변경하는 방법은 무엇입니까?

  13. 13

    하나의 엔티티가 동일한 엔티티 유형의 2 개를 참조하는 엔티티 관계?

  14. 14

    런타임에서 Marklogic 엔티티 정의를 검색하는 방법

  15. 15

    엔티티를 기본값으로 설정 [symfony2]

  16. 16

    Watson Assistant-특정 엔티티의 크기를 가져 오는 방법

  17. 17

    보기 모델이 엔티티 프레임 워크의 모델에서 상속 할 수없는 이유

  18. 18

    symfony2 양식으로 제출 된 엔티티의 ID를 얻는 방법

  19. 19

    뷰포트에서 brep 엔티티의 경계 상자를 그리는 방법은 무엇입니까?

  20. 20

    Symfony2 다른 엔티티에있는 엔티티의 엔티티 가져 오기

  21. 21

    기본적으로 기본 엔터티에서 자식 개체 값의 합계를 가져 오는 방법

  22. 22

    Symfony2 CRUD는 "CRUD 생성기는 엔티티 개체에 기본 키 필드가 있다고 예상합니다 ..."를 생성합니다.

  23. 23

    2 개의 하위 엔티티를 기준으로 그룹화하고이 두 하위 엔티티의 합계를 얻는 방법은 무엇입니까?

  24. 24

    PHP의 DDD의 경우 루트가 아닌 집계의 엔티티에 대한 메서드를 정확히 보호하는 방법은 무엇입니까?

  25. 25

    AngularJS에서 기본 폴백 상태로 중첩 상태를 설정하는 방법

  26. 26

    하나의 Symfony 양식에서 두 엔티티를 매핑하는 방법

  27. 27

    Symfony 3 : 엔티티를 동적으로 조작하는 방법?

  28. 28

    기본 머티리얼 색상 정의를 변경하는 방법이 있습니까?

  29. 29

    Cassandra에서 상수 파티션 키를 정의하는 방법

뜨겁다태그

보관