2009年2月12日木曜日

 

【symfony】テーブルの内部結合 - addJoin()

addJoin~テーブルを結合し、結合した先のカラムの条件でクエリを発行(2結合先まで) - symfonyでsymfuldaze

JobeetのようなDBがあった場合。
JobPeer.phpというモデルを生成した場合。

/* lib/model/JobPeer.php */
  static public function getWithCategory()
  {
    $criteria = new Criteria();
    $criteria->addJoin(self::CATEGORY_ID, CategoryPeer::ID, Criteria::LEFT_JOIN);
    return self::doSelect($criteria);
}

仕事情報と一緒にカテゴリ名も取得する。内部結合。
このメソッドをアクションから呼ぶ。

/* apps/frontend/modules/job/actions/actions.class.php */
<?php
public function executeIndex(sfWebRequest $request)
{
  $this->jobs = JobPeer::getWithCategory();
}

ビューでの使い方はおそらくこの様な。


      <table>
        <?php foreach ($jobs as  $job): ?>
          <tr>
            <td><?php echo $job->getLocation() ?></td>
            <td><?php echo $job->getPosition() ?></td>
            <td><?php echo $job->getCompany() ?></td>
            <td><?php echo $job->getCategory()->getName() ?></td>
          </tr>
        <?php endforeach; ?>
      </table>

get[結合するモデル]()->get[カラム]()な感じ。
更にテーブルを結合も可能だ。


 $c->addJoin(ItemPeer::CATEGORY_ID, CategoryPeer::ID, Criteria::LEFT_JOIN);
 $c->addJoin(CategoryPeer::BIG_CATEGORY_ID, BigCategoryPeer::ID, Criteria::LEFT_JOIN);

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google