2009-04-02 3 views
1

웹 페이지에 입력 된 값을 기반으로 생성 된 열을 사용하여 데이터베이스에 동적으로 테이블을 만들 수 있습니까?폼으로 입력 된 값을 컬럼으로 사용하여 CakePHP에서 동적으로 테이블을 생성 할 수 있습니까?

실제로 양식과 템플릿을 만드는 데 사용할 수있는 응용 프로그램을 만들어야하며 링크를 우편으로 보내고 다른 사람들로부터 데이터를 가져 와서 데이터베이스에 저장할 수 있어야합니다. 각 사용자는 다른 필드를 가진 다른 양식을 작성하여 데이터를 채우고 양식을 제출하는 다수의 사람들에게 보낼 수 있습니다. 그렇다면 각 양식마다 다른 필드가 있으므로 데이터를 어떻게 저장합니까?

답변

3

즉석에서 테이블을 만드는 것이 아니라 데이터를 정적 테이블에서 표현하는 방법을 알아 보는 것이 좋습니다.

방법에 대해 :

  • 등 '수정', 'ID', 'USER_ID', '창조'와 '형태'라는 테이블
  • 'ID'와 '필드'라는 테이블 'form', 'form_id', 'field_id', 'answer'등을 포함하는 'answers'테이블

그런 식으로 구조적인 SQL을 실행하는 대신 조인을 사용합니다. 당신의 온건함이 당신에게 감사 할 것입니다.

+0

감사합니다. 좋은 생각 인 것 같습니다. 이런 식으로 구현 해보겠습니다. – Angeline

+0

당신이 어떤 벽에 부딪쳤다면 어떻게되는지 알게 해주세요. –

+0

엔티티 속성 값이라는 데이터 모델링 기술 참조 http://en.wikipedia.org/wiki/Entity-Attribute-Value_model – neilcrookes

1

예, 가능합니다. 이것은 cakePHP에만 국한되는 것이 아닙니다. 열을 작성하고 제거하는 SQL 코드를 알아야하며 해당 SQL을 query() 호출에 넣으면됩니다.

This page은 (는) 친구입니다.

당신이해야하는지 여부는 또 다른 문제입니다. 일반적으로 설치 또는 업그레이드 중에 만 런타임에 데이터베이스 또는 테이블 구조를 수정해서는 안됩니다. 예를 들어, 사용자 프로필이나 그와 비슷한 사용자 지정 필드를 만들 수 있도록 허용해야하는 경우 런타임에 테이블 구조를 수정하는 것이 답이 아닙니다. 사용자 정의 필드를 모두 포함하는 별도의 테이블과 필드 ID 및 사용자 ID와 함께 모든 값을 포함하는 테이블을 작성하는 것입니다. 이것은 이것을 정상화하는 적절한 방법 일 것입니다. 예, 하나가 아닌 3 개의 테이블이 필요하지만, 예를 들어 한 테이블에 user_customfield1, user_customfield2, user_customfield3 열을 모두 포함하고 런타임에 해당 구조를 수정하는 것보다 낫습니다.

+0

Says 페이지가 없습니다. 당신은 아마도 올바른 링크를 편집하고 가리킬 수 있습니까? –

+1

고정 링크. 그들이 페이지를 옮기는 것 같았습니다. 그러나 런타임시에 이것을 수행하지 말라고 권하고, 위에 설명 된 대체 솔루션을 사용하십시오. – thomasrutter

관련 문제