2010-12-13 4 views
2

J'ai construit une application assez grand avec Zend et je me demandais ce qui serait mieux, la construction de la requête à la main (en utilisant le modèle d'objet Zend)fait main requêtes vs findDependentRowset

$db->select() 
    ->form('table') 
    ->join('table2', 
      'table.id = table2.table_id') 

ou aller avec la méthode findDependentRowset (Zend doc for findDependentRowSet).

Je me demandais depuis que j'ai fait un test pour récupérer des données sur plusieurs tables et afficher toutes les informations d'une table et le findDependentRowset semblait courir plus lentement. Je peux me tromper, mais je suppose que cela fait une nouvelle requête à chaque fois findDependentRowset est appelé comme dans:

$table1 = new Model_Table1; 
$rowset = $table1-fetchAll(); 
foreach($rowset as $row){ 
    $table2data = $row->findDependentRowset('Model_Table2', 'Map'); 

    echo $row['field'] . ' ' . $table2data['field']; 
} 

Alors, que l'on est mieux et est-il un moyen en utilisant findDependentRowset pour construire des complexes requêtes qui pourraient couvrir plus de 5 tables qui fonctionnerait aussi vite qu'une requête faite à la main?

Merci

Répondre

2

En général, construire votre propre requête est la meilleure façon d'aller, parce que zend va créer un seul objet (ou un ensemble d'objets) et faire une seule requête.

Si vous utilisez findDependentRowset, Zend exécutera une autre requête et construira un autre objet (ou ensemble) avec le résultat pour chaque appel.

Vous ne devriez l'utiliser que dans des cas très spécifiques.

Voir cette question: PHP - Query single value per iteration or fetch all at start and retrieve from array?

+0

Merci efface les choses: D –