PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

->joinAdd() | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

->joinAdd()

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

Synopsis

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

Description

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

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

Parameter

  • 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)

Note

This function can not be called statically.

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

Example

本当にシンプルな結合

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


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

より複雑な 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


SELECT * FROM image 
  LEFT JOIN product_image 
      ON (image.id = product_image.image_id)
  LEFT JOIN productgroup 
      ON (image.id = productgroup_image.image_id);
忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「->joinAdd()」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | ->joinAdd()」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: