void $DB_DataObject->joinAdd (
object $dataobject
,
string $joinType
,
string $joinAs
,
string $joinCol
)
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.
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.
Utilisation de colonnes de jointure spécifiques
user->friend (is a id of a person) user->mother (is a id of another person)
This function can not be called statically.
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...
Jointure simple
<?php
// (nécessite un fichier links.ini correctement définit)
// récupération de toutes les images pour le produit 24
$i = new DataObject_Image();
$pi = new DataObjects_Product_image();
$pi->product_id = 24; // set the product id to 24
$i->joinAdd($pi); // add the product_image connectoin
$i->find();
while ($i->fetch()) {
// faites quelques choses
}
?>
SQL résultant
Jointure plus complexe
<?php
// un exemple avec 2 jointures
// récupération de toutes les images liées avec 'products' ou 'productgroups'
$i = new DataObject_Image();
$pi = new DataObject_Product_image();
$pgi = new DataObject_Productgroup_image();
$i->joinAdd($pi);
$i->joinAdd($pgi);
$i->find();
while ($i->fetch()) {
// faites quelques choses
}
?>
SQL résultant