我正在使用sfWidgetFormDoctrineChoice
在表单中构建选择元素。这就是我的使用方式:
// Fill maquinaemisorid
$this->widgetSchema['maquinaemisorid'] = new sfWidgetFormDoctrineChoice(array('model' => 'SdrivingMaquina', 'add_empty' => 'Seleccione una Máquina', 'table_method' => 'fillChoice'));
// Fill idoperador
$this->widgetSchema['idoperador'] = new sfWidgetFormDoctrineChoice(array('model' => 'SdrivingOperador', 'add_empty' => 'Seleccione un Operador', 'table_method' => 'fillChoice'));
// Fill idturno
$this->widgetSchema['idturno'] = new sfWidgetFormDoctrineChoice(array('model' => 'SdrivingTurno', 'add_empty' => 'Seleccione un Turno', 'table_method' => 'fillChoice'));
对于第一个小部件,一切都很好,并且应该从数据库中获取值,但是对于第二个和第三个不起作用。您可能会注意到,我fillChoice
在所有小部件中调用了一个方法table_method
。这是三个的代码:
SdrivingMaquinaTable.class.php
public function fillChoice() {
$id_empresa = sfContext::getInstance()->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
return Doctrine_Core::getTable('SdrivingMaquina')->createQuery('a')->where('a.idempresa = ?', $id_empresa)->execute();
}
SdrivingOperadorTable.class.php
public function fillChoice() {
$id_empresa = sfContext::getInstance()->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
return Doctrine_Core::getTable('SdrivingOperador')->createQuery('a')->where('a.idempresa = ?', $id_empresa)->execute();
}
SdrivingTurno.class.php
public function fillChoice() {
$id_empresa = sfContext::getInstance()->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
return Doctrine_Core::getTable('SdrivingTurno')->createQuery('a')->where('a.idempresa = ?', $id_empresa)->execute();
}
该方法始终相同,只是更改了用于每个类的表。我检查了生成的查询,一切都很好,如果我在 phpMyAdmin 上运行每个查询,例如,会获取多个值,idoperador
并且idturno
只呈现最新的值。这是一种非常罕见的行为,我找不到错误或错误,因此我需要一些帮助或建议。
作为补充,我尝试了这个SdrivingRegistrosEmisoresForm.class.php
(这是生成小部件的地方):
$id_empresa = $this->current_user->getSfGuardUserProfile()->getIdempresa();
$choices_operador = Doctrine_Core::getTable('SdrivingOperador')->createQuery('a')->where('a.idempresa = ?', $id_empresa)->execute();
$this->widgetSchema['idoperador'] = new sfWidgetFormSelect(array('choices' => $choices_operador));
这种方式工作正常,但id
对于每个获取的项目的含义并不正确:
id item real_id
0 Item1 2
1 Item2 16
2 Item4 3
我在这个话题中谈到了这个,但没有得到任何答案,有什么帮助吗?