2010-12-02 69 views
0

J'utilise Kohana 3.x. J'ai une requête simple pour récupérer des objets de ma base de données MySQL:Kohana 3.x: Requête SQL pour les entités et tous leurs membres

$query = DB::query(Database::SELECT, "SELECT * FROM myEntity WHERE foreignKey = {$myForeignKey};"); 
$result = $query->execute($this->database); 
$resultArray = $result->as_array(); 

Cela fonctionne comme prévu. Mon $ resultArray contient autant d'objets que d'entités correspondant à la requête. Chaque objet dans le tableau $ resultArray est un dictionnaire contenant les propriétés en tant que paires valeur-kex.

Mais maintenant je voudrais obtenir pour chaque "myEntity" tous leurs attributs-membres! En ce moment je suis sur un php-pour-boucle comme ceci:

foreach ($resultArray as $entity) { 
    $query = DB::query(Database::SELECT, "SELECT * FROM member WHERE foreignKey = {$entity['id']};"); 
    $result = $query->execute($this->database); 
    $memberArray = $result->as_array(); 
    // do something with the memberArray.. 
    } 

Je suppose qu'il est stupide de faire une autre requête SQL pour chaque objet « MyEntity », et je voudrais plutôt faire une requête obtenir tous les "myEntities" plus tous les membres pour chacune des "myEntities". Mais comment puis-je faire ça?

+0

Vous pouvez joindre les deux tables ensemble pour obtenir votre résultat dans une requête. –

Répondre

0

Pouvez-vous essayer cela et voir si elle produit le résultat que vous voulez?

SELECT * FROM myEntity 
join member on member.foreignKey = myEntity.foreignKey 
WHERE myEntity.foreignKey = {$myForeignKey}; 
+0

vous pouvez remplacer * avec une liste de colonnes spécifiques des deux tables que vous souhaitez dans votre résultat. –