->joinAdd()

->joinAdd() -- JOIN クエリを生成するために他の DataObject を追加する

概要

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

説明

他の DataObject を追加して JOIN クエリを生成します。 このメソッドを使用するときは注意してください。 そのままのクエリの方が joinAddメソッドを使用するよりも 分かりやすいかも知れません。

このメソッドを実装してくれた Stijn de Reede に感謝します。

パラメータ

注意

この関数は、スタティックにコールする ことはできません。

以下の例はテストされていません。DB_DataObject::debugLevel(1) を使用し、 これを使用したときに何が行われているかを理解し、 著者により良い例を送ってください。

例 33-2本当にシンプルな結合


<?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
}
?>

例 33-3結果の SQL

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

例 33-4より複雑な JOIN クエリ


<?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
}
?>

例 33-5結果の SQL

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