void $DB_DataObject->joinAdd (
object $dataobject
,
string $joinType
,
string $joinAs
,
string $joinCol
)
他の DataObject を追加して JOIN クエリを生成します。 このメソッドを使用するときは注意してください。 そのままのクエリの方が joinAddメソッドを使用するよりも 分かりやすいかも知れません。
このメソッドを実装してくれた Stijn de Reede に感謝します。
object $obj
- 結合されるオブジェクトを
指定します。
(値がない場合、結合がクリアされます)
string $joinType
- "LEFT" | "INNER " | "RIGHT" | ""
INNER がデフォルトで、"" は結合やリンクが WHERE 句に追加されず、単純に select ... from a,b,c を実行します。
注意: 'LEFT' は LEFT OUTER と等価です。
string $joinAs
-
テーブルを別名で扱いたい場合、
二次テーブルからカラムを複数選択したいときに役に立つでしょう
string $joinCol
-
このオブジェクトのテーブルでマッチさせたいカラムを指定します。
このテーブルを子オブジェクトの複数箇所にリンクする場合に必要です。
特定の結合するカラムを使用する
user->friend (is a id of a person) user->mother (is a id of another person)
This function can not be called statically.
以下の例はテストされていません。DB_DataObject::debugLevel(1) を使用し、 これを使用したときに何が行われているかを理解し、 著者により良い例を送ってください。
本当にシンプルな結合
<?php
// (links.ini が正しく設定されていることを前提に)
// 24 番の製品のすべての画像を取得します
$i = new DataObject_Image();
$pi = new DataObjects_Product_image();
$pi->product_id = 24; // 製品 ID を 24 に設定します
$i->joinAdd($pi); // product_image を接続します
$i->find();
while ($i->fetch()) {
// 何かの処理を行います
}
?>
結果の SQL
より複雑な JOIN クエリ
<?php
// ふたつの JOIN を使用する例
// 製品あるいは製品グループに関連するすべての画像を取得します
$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()) {
// 何かの処理を行います
}
?>
結果の SQL