2013-01-06 71 views
0

我在Zend的文檔中找到了這個函數,更具體的在創建模型和數據庫表部分(http://framework.zend.com/manual/1.12/en/learning.quickstart.create-model.html)。save()函數Zend Framework

這是Application_Model_GuestbookMapper:

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)); 
    } 
} 

,現在我想這個融入我的控制器,但我不知道怎麼樣?

我創建的映射器的實例,並試圖從我的解碼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列'長'不能爲空...任何想法? – user1946390

+0

根據$行的內容,您可能必須對數據進行規格化以使其適合模型。 – RockyFord

回答

1

你需要傳遞給$ mapper-> save();是Application_Model_Guestbook的一個實例。所以希望你有你定義設置數據數組作爲其屬性的可能性,例如像這樣一類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); 
    } 

我有沒有專門進行測試,但它應該給你一個如何實現你想要做的想法。