propel.iniのpropel.builder.addBehaviors

propel.builder.addBehaviors = true と設定することによって、sfMixerでPeerモデルクラスのdoSelectに処理を突っ込んだり、BaseObjectを継承したモデルクラスにメソッドを追加したりできます。

class Sortable{
 
	/**
	 * 名前で並べ替え
	 *
	 * @param string $class クラス名
	 * @param Criteria $c
	 * @param Connection $con
	 */
	public function orderByName($class, Criteria $c, $con)
	{
		$c->addAscendingOrderByColumn(constant( $class . 'Peer::NAME'));
 
	}
}
 
 
sfMixer::register('BaseStaffPeer:addDoSelectRS:addDoSelectRS', array('Sortable','orderByName'));
sfMixer::register('BaseCustomerPeer:addDoSelectRS:addDoSelectRS', array('Sortable','orderByName'));

class Driver
{
	/**
	 * ドライバーのランクを取得
	 *
	 * @param Staff $s
	 */
	public function getRank($s)
	{
		return PointPeer::retrieveByPK($s->getId())->getRank();
	}
}
 
 
sfMixer::register('BaseStaff', array('Driver','getRank'));