我在 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。