Zend는 DB 열에 필드 매핑을 양식합니다
-
05-07-2019 - |
문제
zend_form이 있습니다
$form = new My_Form();
$uploadedData = $form->getValues();
Zend_Debug::dump($uploadedData, $form->name,true)
그리고 양식 값을 버릴 때 문자열 배열을 얻습니다.
array(11) {
["event"] => string(2) "26"
["firstname"] => string(3) "sdf"
["surname"] => string(0) ""
["gender"] => string(1) "M"
["company"] => NULL
["dateOfBirth"] => string(10) "11-11-1977"
["address"] => string(6) "dfasdf"
["address2"] => string(4) "adfs"
["address3"] => string(4) "adfs"
["email"] => string(7) "x@x.com"
["mobile"] => string(0) ""
}
양식은 내 DB 테이블과 동일한 수의 필드를 가지고 있으며 DB 테이블 DEF는
DROP TABLE IF EXISTS `registration`;
CREATE TABLE IF NOT EXISTS `registration` (
`id` int(11) NOT NULL auto_increment,
`event` int(11) NOT NULL,
`firstname` varchar(50) NOT NULL,
`surname` varchar(50) NOT NULL,
`gender` varchar(5) NOT NULL,
`dateofbirth` date NOT NULL,
`address` varchar(50),
`address2` varchar(50),
`address3` varchar(50),
`email` varchar(50) NOT NULL,
`mobile` varchar(50),
`company` int(11),
`sector` int(11),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DB 이벤트 열이 문자열을 취할 수없고 'dateofbirth'열과 동일하므로 현재 매핑 오류가 발생합니다.
if($form->isValid($formData))
{
$logger->info("valid form");
$table = new Model_DbTable_Registration();
... // apply some custom mapping??
$table->insert($uploadedData);
...
}
새 배열을 수동으로 만들고 각 양식 필드를 이름으로 올바른 유형에 매핑하고 싶지 않습니다. 통증처럼 보입니다. Zend 에서이 매핑을하는 더 똑똑한 방법이 있습니까?
해결책
그렇기 때문에 새 ZF 버전에서 데이터를 설정하고 저장 및 검색하는 방법을 완전히 추상화하는 데 데이터 메이퍼 패턴을 사용하는 이유입니다.
가장 좋은 방법은 새로운 수업을 만들고 해당 클래스와 상호 작용하고 내부적으로 클래스가 DBTable 클래스와 상호 작용하는 것입니다.
제휴하지 않습니다 StackOverflow