又一个未知的记录属性/相关组件

时间:2011-11-04 21:04:14

标签: symfony1 doctrine models

我有这个symfony Recepciones课程 这与Obras_Sociales_Recepciones类有关 正如我的BaseRecepciones类所声称:

   /* @method Recepciones          setRecepcionId()                       Sets the current record's "recepcion_id" value
    * @method Recepciones          setCuentaLaboratorioId()               Sets the current record's "cuenta_laboratorio_id" value
    * @method Recepciones          setCuentasLaboratorios()               Sets the current record's "Cuentas_Laboratorios" value
    * @method Recepciones          setObrasSocialesRecepciones()          Sets the current record's "Obras_Sociales_Recepciones" collection
    */
        abstract class BaseRecepciones extends sfDoctrineRecord
        {
            public function setTableDefinition()
            {
                $this->setTableName('Recepciones');
                $this->hasColumn('recepcion_id', 'integer', 4, array(
                     'type' => 'integer',
                     'fixed' => 0,
                     'unsigned' => true,
                     'primary' => true,
                     'autoincrement' => true,
                     'length' => 4,
                         ));
                $this->hasColumn('cuenta_laboratorio_id', 'integer', 4, array(
                     'type' => 'integer',
                     'fixed' => 0,
                     'unsigned' => true,
                     'primary' => false,
                     'notnull' => true,
                     'autoincrement' => false,
                     'length' => 4,
                     ));


            }

            public function setUp()
            {
                parent::setUp();
                $this->hasOne('Cuentas_Laboratorios', array(
                     'local' => 'cuenta_laboratorio_id',
                     'foreign' => 'cuenta_laboratorio_id'));

                $this->hasMany('Obras_Sociales_Recepciones', array(
                     'local' => 'recepcion_id',
                     'foreign' => 'recepcion_id'));
            }
        }

然而..当我在行动上这样做时

$recepcionPrueba = new Recepciones();
$recepcionPrueba->setObrasSocialesRecepciones($myObject);

它说:

  

未知记录属性/相关组件" obras_sociales_recepciones" on" Recepciones"

任何想法????非常感谢你

4 个答案:

答案 0 :(得分:5)

我终于发现了发生了什么事,我希望有人能帮助我节省两三天的时间来解决这个问题。

Doctrine 1.2 只接受两种表示法表示

CamelCase或underscored_notation。在内部,它识别它们中的任何一个,并且能够将前者转换为后者,反之亦然。

在我的情况下,如果我的表名被称为“obras_sociales_recepciones”或“ObrasSocialesRecepciones”,则此错误将永远不会发生。

事实是,在Doctrine 1.2中,你应该从不使用CamelCase和下划线符号的混合,这是我的示例Obras_Sociales_Recepciones,这绝对会混淆ORM,你可能会收到这个奇怪的错误,从来没有找出原因!

答案 1 :(得分:0)

只是一个猜测,因为我是一个Propel用户...将parent::setUp()移动到setUp方法的末尾会有帮助吗?我想知道父母是否对关系做了什么,如果你在调用父母之后定义它们就无法做到。

答案 2 :(得分:0)

在选择型号名称时避免使用复数名称(在您的情况下,应使用Recepcion)。你能发布位于BaseRecepciones之前的评论吗?好的方法名称应该出现在这个评论中,我想这是奇怪的,比如setObrasSocialesRecepcioness()和2的'

答案 3 :(得分:0)

这是一对一,所以你不要这样做:

$recepcionPrueba->setObrasSocialesRecepciones($myObject);

你做

$recepcionPrueba->addObrasSocialesRecepciones($myObject);

您可以一对一地调用'set'。