2012-07-30 1 views
1

저는 CodeIgniter에서 웹 사이트를 개발 중입니다. 그것은 일부 거대한 양식 (150 필드) 일부 동적으로 생성/잠겨/사전 정의/제거 등 제외하면 기본적인 일종의.CodeIgniter MVC 데이터 조작 방법이 가장 좋습니다.

물론, 양식과 데이터베이스 사이의 전환을하는 데 문제가 있습니다. 매우 복잡한. 내 말은 양식을 제출하면 일부 테이블에 여러 줄이 삽입되고 일부 데이터는 저장되지 않는다는 것입니다. (일부 라디오 버튼 등)

I가 사용 $_POST 데이터를 기입하기 위해 양식 입력 이름을 따서 가능한 많은 특성을 갖는 매우 큰 객체를 생성 한

: 물론

foreach ($largeObj as $key=>$value) 
{ 
    if (isset($_POST[$key])){ 
    $largeObj[$key]=$value; //mind the data escaping 
    } 
} 

절반 입력이 유일한 작품은 다른 사람을 위해 내가 같은 것을 할 필요가 :

$largeObj['tanks']=Array(); 
for ($i=0;$i<$_POST['nbrTanks'];$i++){ 
    $tank=new Tank(); 
    // some if's in order to set some properties 
    $largeObj['tanks'][]=$tank; 
} 

그럼 난 모든 계산을하고 각 테이블에서 해당 데이터를 삽입 할 내 DTO의를 준비합니다. Btw 데이터베이스 테이블을 매핑하기 위해 PHPDAO를 사용했기 때문에 전체 CRUD 작업을 작성하기에는 너무 큽니다.

더 좋은 방법이 있습니까? 어노테이션 주도형이거나 좀 더 효율적인 방법입니다. 왜냐하면 DB 전체의 데이터로 전체 양식을 채워야하기 때문입니다. 어떤 제안이라도 환영합니다. 당신도 방법으로 이동 입력의 목록이있는 경우

답변

1

, 당신은 같은 것을 할 수 있습니다 : 나는 당신의 질문을 이해하면

##Array of items to be checked with `isset()` 
$array_isset = array('field1', 'field2', 'field3'); 
foreach ($array_isset as $line) { 
    #.... same thing you did before 
} 

$array_tank = array('field4', 'field5', 'field6'); 
foreach ($array_tank as $line) { 
    $tank = new Tank() 
} 

은, 위의 방법은 당신이로 필드를 정렬 할 수있는 것 그 (것)들에 실행될 필요가있는 가동.

나는 많은 정보를 다루어야하는 여러 프로젝트를 진행해 왔다고합니다. 필자가 발견 한 모든 것이 가장 좋은 방법은 원시 데이터를 데이터베이스에 저장하고 나중에 계산을 수행하는 방법을 찾는 것입니다. CodeIgniter의에서, 당신은 단지이 작업을 수행 할 수 있기 때문에

이 또한 그것을 쉽게 :

양식 필드는 데이터베이스 열 이름과 일치하는 경우
$array = $this->input->post(NULL, True); 
$this->db->insert('table', $array); 

.

$array = array('value1', 'value2', 'value3'); 
$insert_string = implode(',', $array); 

을 그리고 당신이 그것을 선택하면 그것을 폭발 :

는 데이터의 목록이있는 경우, 당신은이 같은 쉼표 separted 목록으로 데이터를 저장할 수 있습니다.

이 방법은 사용자 상황에 따라 작동하지 않을 수 있지만 특정 상황에서는 유용합니다.

신청서와 함께 행운을 보내십시오. 내가 도왔 으면 좋겠어!

+0

고맙습니다. 이미 $ array = $ this-> input-> post (NULL, True)를 사용하고있었습니다. 불가능한 양식과 일치하는 열과 마찬가지로 너무 많은 논리가 진행 중입니다 .. 전환을보다 효율적으로하려고합니다. 양식 - (데이터 저장 및 조작) -> 큰 개체 ----- (DTO 준비) ----> 데이터베이스 – Samson

+0

그럼 내 대답의 첫 번째 코드 스 니펫은 훨씬 간단 해 지므로 코드를 무의미하게 반복하지 않아도됩니다. – David