私は Symfony 1.3.11 で sfPropel15Plugin を使用していましたが、すべてうまく機能していました。
Propel 1.6 を使用する sfPropelORMPlugin にプラグインをアップグレードすることにしました。プラグインをインストールする通常の手順を実行しました。ほとんどの場合、アプリを元に戻して動作させることができました。ただし、以前使用していた特定のフォーム フィルター条件が壊れており、有効な SQL を生成していないことがわかりました。
1.5 では機能するが、1.6 では機能しない例を次に示します。
// select only users who are sales reps on an existing quote
$c = new Criteria();
$c->addJoin(sfGuardUserPeer::ID, sfGuardUserProfilePeer::USER_ID);
$c->addJoin(QuotePeer::SALESREP, sfGuardUserPeer::ID);
$c->addGroupByColumn(sfGuardUserPeer::ID);
$c->addAscendingOrderByColumn(sfGuardUserProfilePeer::FIRST_NAME);
$this->widgetSchema['salesrep'] = new sfWidgetFormPropelChoice(array(
'label' => 'Sales rep',
'add_empty' => true,
'order_by' => array('Username', 'asc'),
'model' => 'sfGuardUser',
'method' => 'getFullName',
'criteria' => $c,
'key_method'=> 'getId',
'multiple' => false
));
次の無効な MySQL が生成されます。
SELECT sf_guard_user.ID, sf_guard_user.USERNAME, sf_guard_user.ALGORITHM, sf_guard_user.SALT, sf_guard_user.PASSWORD, sf_guard_user.CREATED_AT, sf_guard_user.LAST_LOGIN, sf_guard_user.IS_ACTIVE, sf_guard_user.IS_SUPER_ADMIN, sf_guard_user.VANTIVE_ID FROM LEFT JOIN `sf_guard_user` ON (quote.SALES_ENGINEER=sf_guard_user.ID)
ほとんどの場合、これがバグなのか、小さな変更で修正できるのか、1.5 に戻す必要があるのかを判断したいと考えています。