2011-11-04 66 views
0

香港專業教育學院這樣的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); 

它說:

不明N於 「Recepciones」 記錄屬性/相關組件 「obras_sociales_recepciones」

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

回答

5

我終於發現發生了什麼事情,我希望它能幫助別人節省兩三天的時間,讓我知道這一點。

學說1.2只接受兩種符號爲表名

CamelCase或者underscored_notation。它在內部承認它們中的任何一個,並且能夠將前者轉換爲後者,反之亦然。

在我的情況下,如果我的表名被稱爲「obras_sociales_recepciones」或「ObrasSocialesRecepciones」,這個錯誤將永遠不會發生。

的事情是,在學說1.2,你應該從不使用首字母大寫的混合和下劃線符號,這是在我的例子Obras_Sociales_Recepciones,這絕對是混淆了ORM,你可能會收到此奇怪的錯誤,從來沒有找出原因!

+0

問題是:表名稱是「amount_cur」,但Doctrine想要訪問表「amount_CUR」,但不能(表名是動態形成的)。謝謝! –

0

只是一個猜測,因爲我是一個Propel用戶......它會幫助將parent::setUp()移動到setUp方法的結尾?我想知道父母是否對這些關係做了些什麼,並且如果你在調用父母之後定義了他們,他們是無法做到的。

+0

mmm nope that's auto-generated code .. thanks anyway – Maruccio

0

避免在選擇模型名稱時使用複數名稱(在你的情況下,你應該使用Recepcion)。你能發佈位於BaseRecepciones之前的評論嗎?好的方法名稱應該是在此評論,我想這是一個很奇怪的像setObrasSocialesRecepcioness() 2「S」

+0

nope,我添加了評論,似乎並不是它 – Maruccio

+0

你仍然應該真的切換到單數名稱。看到這個線程:http://stackoverflow.com/questions/4100489/table-naming-convention-with-doctrine-orm和這一個:http:// stackoverflow。com/questions/6244615/naming-convention-singular-vs-plural-for-classes-descriptions-entities-in- – greg0ire

0

這是一個一對多的,所以你不這樣做:

$recepcionPrueba->setObrasSocialesRecepciones($myObject); 

你做

$recepcionPrueba->addObrasSocialesRecepciones($myObject); 

您可以通過一對一的方式調用'set'。

+0

對不起,這不是解決方案,我只是添加了在函數簽名前出現的註釋 – Maruccio

相關問題