2009-10-01 5 views
1

Je souhaite enregistrer un objet ou un formulaire dans la base de données. Seulement, je ne peux pas trouver le moyen le plus facile (ou normal) de le faire.Quelle est la façon actuelle dont je peux ajouter un objet à la base de données en utilisant Zend Framework?

J'ai trouvé beaucoup de tutoriels, mais aucun ne semble facile ou actuel. Quelqu'un pourrait m'aider avec ça? J'utilise la version 1.9.3 de Zend Framework.

+0

Voulez-vous vraiment dire «objet» et «forme» ou voulez-vous dire les données? – markus

Répondre

4

La meilleure façon (alias le chemin en utilisant la plus petite quantité de code) pour insérer une ligne dans une table de base de données à l'aide Zend_Db est:

$data = array(
    'created_on'  => '2007-03-22', 
    'bug_description' => 'Something wrong', 
    'bug_status'  => 'NEW' 
); 

$db->insert('bugs', $data); 

Le code ci-dessus insérer une nouvelle ligne dans la table bugs alors que $db est la sous-classe Zend_Db_Adapter_Abstract que vous avez créée avec Zend_Db::factory(). S'il vous plaît voir Writing Changes to the Database dans le Zend Framework manual pour plus de détails et l'ensemble du spectre des fonctionnalités Zend_Db fournit.

Par souci d'exhaustivité, le code ci-dessus émettre une requête à la base de données similaire à:

INSERT INTO bugs (created_on, bug_description, bug_status) 
    VALUES ('2007-03-22', 'Something wrong', 'NEW') 

L'étape suivante serait une approche plus sophistiquée en utilisant Zend_Db_Table.

EDIT:

Étant donné que vous avez un Zend_Form ($form) avec les champs appropriés created_on, bug_description et bug_status et à condition que vous avez les filtres droit et validateurs en place, en ajoutant une nouvelle ligne avec les valeurs données sous la forme est aussi facile que

if ($form->isValid($_POST)) { 
    $db->insert('bugs', $form->getValues()); 
} 

Enregistrement d'un objet personnalisé est également très facile:

// $bug is your custom object representing a bug 
$db->insert('bugs', array(
    'created_on'  => $bug->getCreatedOn(), 
    'bug_description' => $bug->getDescription(), 
    'bug_status'  => $bug->getStatus() 
)); 
+0

Cette clarification aide beaucoup. Vous l'expliquez très bien. Merci pour tout votre temps. –

0

Instancier tout objet dont vous avez besoin et serialize it. Une fois sérialisé, vous pouvez le stocker ou le transmettre à peu près n'importe quel support. Est-ce cela que vous voulez dire?

Questions connexes