保存()函数


save() function Zend Framework

我在Zend的文档中找到了这个函数,更具体的是在创建模型和数据库表部分(http://framework.zend.com/manual/1.12/en/learning.quickstart.create-model.html)。

这是在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();
   }
}

我知道我必须传递$data到save()函数,但我不知道如何…模型不适合json-url,我只是想展示我如何检索和解码json。

有人能帮我吗?

需要传递给$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);
   }

我还没有专门测试过这个,但是它应该给你一个如何实现你想要做的事情的想法。