やかんブログ

[php][Propel]PropelでMySQL関数を使う

2007年11月02日(金)17:09|谷口

谷口です。

今回はPropelでMySQL関数を使う方法について書きます。

symfonyコマンドなどで作成されたモデルクラスを見ると、doCount()という関数があるかと思います。基本的にはこれを踏襲します。

MAX関数を使う

下記のようにBaseクラスを継承したクラスが定義されてますので、それに追記します。

class TablePeer extends BaseTablePeer

実際にMAX関数を使ってみましょう。

class TablePeer extends BaseTablePeer

{

  const MAX = 'MAX(%s)';

  public static function doMax(Criteria $criteria, $field,  $con = null)

  {

        $criteria = clone $criteria;        $criteria->clearSelectColumns()->clearOrderByColumns();

        $field = sprintf(TablePeer::MAX, $field);

        $criteria->addSelectColumn($field);

foreach($criteria->getGroupByColumns() as $column)

    {

      $criteria->addSelectColumn($column);

    }

$rs = TablePeer::doSelectRS($criteria, $con);

    if ($rs->next()) {

      return $rs->getInt(1);

    } else {

      return 0;

    }

  }

}

こんな感じです。 呼出しは以下のようにします。

$c = new Criteria();

$max_id = TablePeer::doMax($c, TablePeer::ID);

終わりに

同じような感じで、他の関数も使える関数を作成できます。

この記事に関するお問い合わせはこちら

ページの先頭へ