0

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 を取得してデコードする方法を示したかっただけです。

誰でも私を助けることができますか?

4

1 に答える 1

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

これを具体的にテストしたわけではありませんが、やりたいことを達成する方法のアイデアが得られるはずです。

于 2013-01-06T14:02:07.550 に答える