2012-02-12 154 views
1

我花了好幾個小時才找到解決方案,將外鍵保存在母表中。 我想用symfony 1.4的嵌入關係(我也有ahDoctrineEasyEmbeddedRelationsPlugin)。外鍵永不保存嵌入關係

當我讀到這裏symfony的文檔

http://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Forms

的模式是:

Product: 
    columns: 
    name:   { type: string(255), notnull: true } 
    price:   { type: decimal, notnull: true } 
ProductPhoto: 
    columns: 
    product_id:  { type: integer } 
    filename:  { type: string(255) } 
    caption:  { type: string(255), notnull: true } 
    relations: 
    Product: 
     alias:  Product 
     foreignType: many 
     foreignAlias: Photos 
     onDelete:  cascade 

的embedRelation樣子:

// lib/form/doctrine/ProductForm.class.php 
public function configure() 
{ 
    // ... 

    $this->embedRelation('Photos'); 
} 

在我來說,我不能另一方面,這是相反的,產品有關係鍵,ih AVE類似的東西:

Product: 
    columns: 
    name:   { type: string(255), notnull: true } 
    price:   { type: decimal, notnull: true } 
    photoid:  { type: integer } 
    ownerid:  { type: integer } 
    relations: 
    Photo: 
     local:  photoid 
     foreign:  id 
     type:   one 
    Owner: 
     local:  ownerid 
     foreign:  id 
     type:   one 
Photo: 
    columns: 
    id :   { type: integer } 
    filename:  { type: string(255) } 
    caption:  { type: string(255), notnull: true } 
owner: 
    columns: 
    id :   { type: integer } 
    firstname:  { type: string(255) } 
    lastname:  { type: string(255), notnull: true } 

和embedRelation:

// lib/form/doctrine/ProductForm.class.php 
public function configure() 
{ 
    // ... 
    $this->embedRelation('Photo'); 
    $this->embedRelation('Owner'); 
} 

還有不小部件有關,如姓名或價格的產品形式更新,但只有信息從照片和主表來。

當我保存新表格時,照片和所有者對象保存在表格中,並且ID是使用序列創建的。問題是產品從不更新。 photoid和ownerid仍然保持爲空。 這就像嵌入式表單照片和所有者保存在根表單之後。

在這種情況下可以使用嵌入嗎? 如果那麼當根表單保存在processForm中時,在Product表中保存外鍵的正確方法是什麼? 有什麼竅門,thx求助。

回答

0

在PhotoForm.class.php使用:

$this->useFields(array('filename', 'caption')); 

還要讀documentation

+0

usefields是顯示爲文件說:「sfForm :: useFields()是一種新功能,Symfony的1.3是允許開發人員準確指定表單應該使用哪些字段以及應該按什麼順序顯示,其他所有非隱藏字段都將從表單中刪除。「兩個表的ID隱藏在表單中。我遇到的問題是保存外鍵,而不是顯示。 – philcaba 2012-02-13 10:08:03