为什么sfPropelORM会破坏我的表单过滤条件?

时间:2012-06-14 00:12:59

标签: mysql symfony1 symfony-1.4 propel

我正在使用sfPropel15Plugin与Symfony 1.3.11,一切都运行良好。

我决定将插件升级到使用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。

0 个答案:

没有答案