2014-11-04 3 views
0

현재 관리자가 편집 할 수있는 시스템을 만들고 있습니다. 그는 그 (것)들을 추가 할 수없고, 기존의 것에서 만 선택/편집 할 수 있습니다.엔터티에 시스템 설정을 저장하는 방법

모든 백엔드는 소나타에서 수행됩니다.

설정 클래스 :

class SystemSettings 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @ORM\Column(name="key", type="string", nullable=true) 
    */ 
    private $key; 

    /** 
    * @ORM\Column(name="value", type="string", nullable=true) 
    */ 
    private $value; 
} 

문제는 내가 가게에 다른 값 유형이 있다는 것입니다. 예를 들어 목록의 언어 배열을 표시하고 싶지만 "페이지를 게시하는"설정의 경우 사용자는 원하는 모든 정수를 적어 둘 수 있어야합니다. 그것을 보관하고 표시하는 적절한 방법이 있습니까?

답변

0

이 저장 방법을 사용할 때의 문제점은 가변 데이터 유형입니다. 곧 중첩 된 구성이 필요할 것이고 결국은 복잡한 쿼리를 작성하여 임베디드 JSON 문자열을 선택하고 업데이트 할 것입니다.

정확한 해결책을 드릴 수 없지만 문제를 해결하기 위해 노력하고 있습니다. 그러나 아직 탐색하지 못한 해결책은 다음과 같습니다.

  • MongoDB 사용. 기본적으로 JSON에 데이터를 저장하기 때문에 임의의 데이터 유형 (적어도 스칼라 범위와 배열 범위 내)을 저장하는 것이 더 적합합니다.

  • 동적 파일 구성. 임의의 데이터를 저장하기위한 형식으로 XML 또는 JSON을 사용하는 쓰기 가능한 파일입니다. 서버 소프트웨어가 여러 컴퓨터에서 실행되는 경우 문제가 발생할 수 있습니다. 그러나 첫 번째 솔루션을 구현할 수 있다면이 것은 본질적으로 동일합니다.

모든 경우에 잘못 설정된 경우 구성이 손상되지 않아야합니다. 정적 기본값이 다시 설정되어야합니다. 이를 달성하기 위해 Symfony \ Component \ Config 구성 요소를 적용하는 방법을 모색 중입니다.

관련 문제