2011-01-04 3 views
0

Je crée une application dans zend framework. Maintenant, je suis coincé dans les relations de table Zend.Relations Zend DB

J'ai 2 tables. J'ai mis la clef primaire et les références correspondantes dans d'autres tables. Maintenant, je veux joindre les deux tables en utilisant les relations (pas avec les fonctions de jointure). Est-ce possible en zend?

les tables structures sont comme ci-dessous

Schemetable

scheme_id clé primaire

Scheme_name

Scheme_Desc

Ratestable

rate_id

Scheme_id * clé étrangère ref scheme_id *

taux:

Périodes de temps:

Il y a un un à plusieurs rapport b/w du régime et les taux

J'ai fait un certain codage dans les classes de modèle

Scheme.php

class Scheme extends Zend_Db_Table_Abstract { 


protected $_name = 'schemetable'; 

protected $_dependentTables = array('rates'); 
} 

Rates.php

class Rates extends Zend_Db_Table_Abstract { 


protected $_name = 'ratetable'; 

protected $_referenceMap = array(
    'Scheme' => array(
    'columns' => array('scheme_id'), 
    'refColumns' => array('scheme_id'), 
    'refTableClass' => 'Scheme', 
), 
); 
} 

Comment puis-je aller chercher tous les schémas et leurs taux correspondants?

Merci d'avance.

+0

pourquoi ne pas utiliser "(pas de jointure fonctions)"? –

+0

Vous serez en mesure de trouver une solution là http://stackoverflow.com/questions/4433910/hand-made-queries-vs-finddependentrowset –

Répondre

2

S'il vous plaît, voir le DOCS:

http://framework.zend.com/manual/en/zend.db.table.relationships.html

Récupérer des enregistrements dépendants

Si vous avez un objet Row à la suite d'une requête sur une table parent, vous pouvez récupérer des lignes à partir de tables dépendantes qui référencent la ligne en cours.Utilisez la méthode :

$row->findDependentRowset($table); 

Exemple # 4 Rowsets à charge instruction FETCH en utilisant la méthode magique

Cet exemple montre trouver dépendants Rowsets équivalents à ceux des exemples précédents. Dans ce cas, l'application utilise la méthode magique invocation au lieu de spécifier la table et la règle en tant que chaînes.

$accountsTable = new Accounts(); 
    $accountsRowset = $accountsTable->find(1234); 
    $user1234 = $accountsRowset->current(); 

    // Use the default reference rule 
    $bugsReportedBy = $user1234->findBugs(); 

    // Specify the reference rule 
    $bugsAssignedTo = $user1234->findBugsByEngineer(); 

Récupérer une ligne parent

Si vous avez un objet Row à la suite d'une requête sur une table à charge, vous peut extraire la ligne dans le parent auquel la ligne dépendante se réfère. Utilisez la méthode :

$row->findParentRow($table); 

Cet exemple montre trouver des lignes mères équivalentes à celles des exemples précédents. Dans ce cas, l'application utilise la méthode magique invocation au lieu de spécifier la table et la règle en tant que chaînes.

$bugsTable = new Bugs(); 
    $bugsRowset = $bugsTable->fetchAll(array('bug_status = ?', 'NEW')); 
    $bug1 = $bugsRowset->current(); 

    // Use the default reference rule 
    $reporter = $bug1->findParentAccounts(); 

    // Specify the reference rule 
    $engineer = $bug1->findParentAccountsByEngineer();