->joinAdd()

->joinAdd() -- add another dataobject to build a create join query

Synopsis

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

Description

Builds a Join Query, by adding another dataobject to this one. Be careful when using this, raw queries may be clearer than using joinAdd.

Thanks to Stijn de Reede for the implementation of this.

Parameter

Note

This function can not be called statically.

The Examples below are not tested, use DB_DataObject::debugLevel(1), to see what exactly is going on when you use this, and send the author some better examples..

Example

Example 39-2. Simple simple Join


<?php
// (requires links.ini to be set up correctly)
// get all the images for product 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()) {
// do stuff
}
?>

Example 39-3. Resulting SQL

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

Example 39-4. More Complex Join query


<?php
// an example with 2 joins
// get all the images linked with products or 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()) {
// do stuff
}
?>

Example 39-5. Resulting SQL

SELECT * FROM image 
  LEFT JOIN product_image 
      ON (image.id = product_image.image_id)
  LEFT JOIN productgroup 
      ON (image.id = productgroup_image.image_id);