2010-08-08 10 views
1

j'ai un fetchRow, ce qui se fait comme elle:
Zend Db Tableau Résumé fetchRow ajouter de nouveaux objets qu'il

$db = new Database(); 
$data = $db->fetchRow($db->select()->where('id = ?',$id)); 

fait, je voudrais récupérer tous les fichiers de la table de fichiers, comme ceci:

$files = new Database(); 
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id)); 

Mais il retourne deux objets différents, comment puis-je ajouter à un seul objet?

Si je fais:

$this->view->photos = $photos; 
$this->view->data = $data; 

Il fonctionne, mais comment puis-je fusionner les photos à l'intérieur des données?

Merci et meilleures salutations.

Répondre

0

essayer

$db = new Database(); 
$data = $db->fetchRow($db->select()->where('id = ?',$id)); 

$files = new Database(); 
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id)); 



array_push($photos, $data); 
+0

J'ai essayé mais ça n'a pas fonctionné, je pense que les valeurs retournées sont des objets et zend db abstract table peut ajouter de nouvelles valeurs d'objets. meilleure considération –

+0

Vous ne pouvez pas faire cela parce qu'un ensemble de lignes doit avoir ses données hydratées ... cela n'arrive pas jusqu'à ce que vous bouclez les résultats (au moins il n'a pas la dernière fois que j'ai utilisé Zend_Db en 1.7). Pour faire ce que vous avez décrit, vous devez faire une boucle manuellement entre ces deux ensembles de lignes et les affecter à un tableau, ou si toutes les données ont déjà été accédées, vous pouvez appeler "toArray" sur l'objet rowset et obtenir un tableau, mais Cela transformera également les objets ligne en tableaux. – prodigitalson

+0

Oui, je le fais. Merci
$ row = $ db-> fetchRow ($ dado) -> toArray();
$ fotos ['fotos'] = $ db-> fetchRow ($ dado) -> findDependentRowset ('Fotos') -> toArray();
$ data = (objet) array_merge ($ row, $ fotos); Merci et meilleures salutations. –

1

Si votre table est un ensemble de données de différents types, vous devez contrôler comment ils sont hydratés - ie. quels objets sont renvoyés de la requête. Pour ce faire, vous devez créer votre propre classe Rowset pour la table et la définir comme une propriété de la classe Database (en supposant qu'il s'agit d'un Zend_Db_Table).

Dans cette classe d'ensemble de lignes, vous examinez la propriété de la ligne lorsqu'elle est hydratée, puis choisissez la classe à utiliser 'Données' ou 'Photo'. Pour garder les choses cohérentes, vous devrez également modifier la classe de la table afin de gérer l'hydratation d'un seul enregistrement (c'est-à-dire en utilisant une méthode find).

+1

Aucune idée comment le faire, j'utilise le résumé de la table db zend et je ne la relation, je suis en mesure d'appeler la deuxième requête en faisant row- $> findDependentRowset ('Fotos'); Meilleures salutations. –

+0

Pouvez-vous s'il vous plaît mettre à jour votre question avec le schéma pour les tables dont nous parlons et/ou les noms de classe de table et de rangée? Je ne savais pas que vous aviez un ensemble de lignes dépendantes, bien que chaque signe se trouvait dans la même table d'après la façon dont vous avez formulé votre question et le nom de classe que vous avez fourni. – prodigitalson

+0

Merci, je pourrais le résoudre, tourner tout à tableau, puis fusionné que je l'ai tourné pour objecter à nouveau. Merci pour vos réponses, meilleure considération. –