[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);
終わりに
同じような感じで、他の関数も使える関数を作成できます。