我在表Empresa
中添加了一个新字段,因此我需要更改模型。为了不重新生成整个事物,意味着模型 - 表单 - 过滤器我决定手动添加(手动),所以我试图将属性添加到BaseSdrivingEmpresa.class.php
,如下所示:
<?php
/**
* BaseSdrivingEmpresa
*
* This class has been auto-generated by the Doctrine ORM Framework
*
* @property integer $umbralvoz
*
* @method integer getUmbralvoz() Returns the current record's "umbralvoz" value
* @method SdrivingEmpresa setUmbralvoz() Sets the current record's "umbralvoz" value
*
* @package isecurdriving
* @subpackage model
* @author Your name here
* @version SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
*/
abstract class BaseSdrivingEmpresa extends sfDoctrineRecord {
public function setTableDefinition() {
$this->setTableName('sdriving_empresa');
$this->hasColumn('umbralvoz', 'integer', 11, array(
'type' => 'integer',
'notnull' => false,
'default' => 60,
'length' => 11,
));
}
}
但是我收到了这个错误:
500 |内部服务器错误| Doctrine_Record_UnknownPropertyException
每当我尝试让属性在模板上显示时:
$id_empresa = $this->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
$this->sdriving_configuracion = Doctrine_Core::getTable('SdrivingEmpresa')->createQuery('a')->where('a.idempresa = ?', $id_empresa)->execute();
<?php echo $sdriving_configuracion[0]->SdrivingEmpresa->getUmbralvoz() ?>
我的错误在哪里?
答案 0 :(得分:2)
首先手动编辑Base*.class.php
并不是一个好主意,因为这个类是自动生成的,并且会被下一个模型构建覆盖。如果您想手动执行任何操作,则应该使用BaseSdrivingEmpresa.class.php
SdrivingEmpresa.class.php
的直接子项进行操作。
第二件事是,这种修改的更好地方是SdrivingEmpresaTable.class.php
。我建议修改getInstance
方法,使它看起来像:
public static function getInstance()
{
$this->setColumn('umbralvoz', 'integer', 11, array(
'type' => 'integer',
'notnull' => false,
'default' => 60,
'length' => 11,
));
return Doctrine_Core::getTable('SdrivingEmpresa');
}
最后,我认为在这种情况下,最佳解决方案只是修改您的schema.yml
文件,添加您的列然后使用命令
./symfony doctrine:build-model
将重建您的模型,而不会触及您提到的表单,过滤器。