2013-01-06 6 views
0

J'ai trouvé cette fonction dans la documentation de Zend, plus spécifique dans la section Créer un modèle et une table de base de données (http://framework.zend.com/manual/1.12/en/learning.quickstart.create-model.html).save() fonction Zend Framework

Ceci est dans le 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)); 
    } 
} 

et maintenant je voudrais intégrer dans mon contrôleur, mais je ne sais pas comment?

J'ai créé une instance de cartographe et a essayé de passer les informations de ma chaîne JSON décodée, mais je reçois encore des erreurs ...:

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

Je sais que je dois transmettre les données de $ à la fonction save() mais je n'ai aucune idée de comment ... Le modèle ne rentrera pas dans le json-url, je voulais juste montrer comment je récupère et décode le json.

Quelqu'un peut-il m'aider?

+0

Super! mais ne peut toujours pas charger mes données dans ma base de données ... Maintenant, je reçois cette erreur: violation de la contrainte d'intégrité: 1048 Colonne «long» ne peut pas être nulle ... Des idées? – user1946390

+0

Selon le contenu de $ row, vous devrez peut-être normaliser les données pour qu'elles correspondent au modèle. – RockyFord

Répondre

1

Ce que vous devez passer à $ mapper-> save(); est une instance de Application_Model_Guestbook. Donc, nous espérons que vous avez un Application_Model_Guestbook de classe dans laquelle vous définissez la possibilité de définir un ensemble de données que ses attributs, par exemple comme ceci:

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

ensuite d'appeler cela, utilisez:

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

Je pas testé spécifiquement, mais il devrait vous donner une idée de la façon de réaliser ce que vous voulez faire.