2013-01-06 2 views
0

Zend의 설명서에서 모델 및 데이터베이스 테이블 만들기 섹션 (http://framework.zend.com/manual/1.12/en/learning.quickstart.create-model.html)에 더 자세히 설명 된이 함수를 발견했습니다.save() function Zend Framework

public function save(Application_Model_Guestbook $guestbook) 
{ 
    $data = array(
     'email' => $guestbook->getEmail(), 
     'comment' => $guestbook->getComment(), 
     'created' => date('Y-m-d H:i:s'), 
    ); 

    if (null === ($id = $guestbook->getId())) { 
     unset($data['id']); 
     $this->getDbTable()->insert($data); 
    } else { 
     $this->getDbTable()->update($data, array('id = ?' => $id)); 
    } 
} 

지금 난 내 컨트롤러에이 통합 싶습니다,하지만 난 아무 생각하는 방법이 없습니다 :

이것은 Application_Model_GuestbookMapper에?

나는 매퍼의 인스턴스를 생성하고 그것에 내 디코딩 된 JSON 문자열에서 정보를 전달하려고하지만, 난 여전히 ... 오류를 얻을 :

public function indexAction() 
{ 
    $mapper = new Application_Model_GuestbookMapper(); 
    $db = Zend_Db_Table_Abstract::getDefaultAdapter(); 

    $json = file_get_contents('http://data.appsforghent.be/poi/apotheken.json'); 
    $data = Zend_Json::decode($json); 

    foreach($data['apotheken'] as $row) 
    { 
     $mapper->save(); 
    } 
} 

나는 내가 $의 데이터를 전달 알고 save() 함수를 사용했지만 모델을 json-url에 맞지 않게 만드는 방법은 모르겠다. json을 검색하고 디코딩하는 방법을 보여주고 싶었다.

아무도 도와 줄 수 있습니까?

+0

대단원! 하지만 여전히 내 데이터베이스에 내 데이터를로드 할 수 없습니다 ... 이제이 오류가 발생합니다 : 무결성 제약 조건 위반 : 1048 열 '긴'null이 될 수 없습니다 ... 어떤 아이디어? – user1946390

+0

$ row의 내용에 따라 모델에 맞게 데이터를 정규화해야 할 수 있습니다. – RockyFord

답변

1

$ mapper-> save();로 전달해야 할 내용; Application_Model_Guestbook의 인스턴스입니다.

class Application_Model_Guestbook { 
    private $email,$comment,$created; 
    public function __construct($data) { 
    $this->email = $data['email']; 
    // etc add other variables 
    } 
    public function getEmail() { 
    return $this->email; 
    } 
} 

은 그런 그에게 전화하기, 사용 : 내가 가지고있는

foreach($data['apotheken'] as $row) 
    { 
     $guestbook = new Application_Model_Guestbook($row); 
     $mapper->save($guestbook); 
    } 

그래서 잘하면 당신은 다음과 같은 예를 들어, 그 속성과 같은 데이터 배열을 설정할 수있는 가능성을 정의하는 클래스 Application_Model_Guestbook이 이 테스트는 구체적으로하지는 않지만 원하는 작업을 성취 할 수있는 방법에 대한 아이디어를 제공해야합니다.