Manuel Pear

->joinAdd()

->joinAdd() --  Ajout un autre objet de données pour construire une requête de jointure

Synopsis

void $DB_DataObject->joinAdd ([object $dataobject [, string $joinType [, string $joinAs [, string $joinCol]]]])

Description

Construit une requête de jointure, en ajoutant un autre objet de données à celui déjà présent. Soyez prudent lorsque vous utilisez cette méthode, les requêtes simples seront plus claires que lors de l'utilisation de joinAdd().

Merci à Stijn de Reede pour avoir implémenté cette méthode.

Paramètres

  • object $obj - l'objet à joindre (aucune valeur effacera la jointure courante)

  • string $joinType - "LEFT" | "INNER " | "RIGHT" | ""

    INNER est la valeur par défaut, "" indique juste une requête du type 'select ... from a,b,c' sans jointure et les liens seront ajoutés dans les éléments 'where'.

    Note : 'LEFT' est la même chose que LEFT OUTER.

  • string $joinAs - si vous voulez sélectionner la table sous un autre nom ; utile lorsque vous voulez sélectionner plusieurs colonnes depuis une seconde table.

  • string $joinCol - La colonne de cet objet qui correspond, nécessaire si cette table est liée à un fils de l'objet en plusieurs endroits e.g.

    Exemple 39-1. Utilisation de colonnes de jointure spécifiques

    user->friend (is a id of a person)
    user->mother (is a id of another person)
    

Note

Cette fonction ne peut pas être appelée de façon statique.

Les exemples ci-dessous n'ont pas été testés, utilisez DB_DataObject::debugLevel(1), pour voir exactement ce qu'il se passe lorsque vous les utilisez et envoyez à l'auteur de meilleurs exemples...

Exemple

Exemple 39-2. Jointure simple

  1. <?php
  2. // (nécessite un fichier links.ini correctement définit)
  3. // récupération de toutes les images pour le produit 24
  4.  
  5. $i = new DataObject_Image();  
  6. $pi = new DataObjects_Product_image();  
  7. $pi->product_id = 24; // set the product id to 24
  8. $i->joinAdd($pi); // add the product_image connectoin
  9. $i->find();  
  10. while ($i->fetch()) {  
  11. // faites quelques choses
  12. ?> 

Exemple 39-3. SQL résultant

SELECT * FROM image
  LEFT JOIN product_image
    ON (image.id = product_image.image_id)
  WHERE product_image.id = 24

Exemple 39-4. Jointure plus complexe

  1. <?php
  2. // un exemple avec 2 jointures
  3. // récupération de toutes les images liées avec 'products' ou 'productgroups'
  4. $i = new DataObject_Image();  
  5. $pi = new DataObject_Product_image();  
  6. $pgi = new DataObject_Productgroup_image();  
  7. $i->joinAdd($pi);  
  8. $i->joinAdd($pgi);  
  9. $i->find();  
  10. while ($i->fetch()) {  
  11. // faites quelques choses
  12. ?> 

Exemple 39-5. SQL résultant

SELECT * FROM image,product_image
LEFT JOIN image ON product_image
LEFT JOIN image ON productgroup_image
WHERE product
AND product.id = product_image.pid
AND product.id = productgroup_image.pid

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto