2012-07-21 54 views
0

我想修改我的用戶類(FOS_UserBundle)。我有一個與公司分開的表格,當創建用戶時,我希望將它綁定到這些公司之一。最終,我將不得不發現如何在創建公司表中的條目時自動創建用戶,但現在我只是試圖提供測試數據。不能添加字段到我的用戶類(Fos_UserBundle)

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var object BizTV\BackendBundle\Entity\company 
    * 
    * @ORM\ManyToOne(targetEntity="BizTV\BackendBundle\Entity\company") 
    * @ORM\JoinColumn(name="company", referencedColumnName="id") 
    */ 
    protected $company; 

在我的結構我試圖設置

$this->company = 1; 

但由於它想要的對象,是行不通的,所以我實例化的公司對象,並使用虛擬數據填充它...

$dummy = new company; 
$dummy->setActive(true); 
$dummy->setCompanyName('myCompany'); 
$dummy->setId(1); 

$this->company = $dummy; 

然後我得到被人發現一個新的實體的錯誤信息......

一個新的實體是缶通過未配置爲級聯實體的持續操作的關係'BizTV \ UserBundle \ Entity \ User#company': BizTV \ BackendBundle \ Entity \ company @ 0000000018a5279000000000049c7b23。顯式持久化新實體或在關係上配置級聯持久操作。如果您無法找到哪個實體導致問題實現'BizTV \ BackendBundle \ Entity \ company #__ toString()'以獲取線索。

+1

什麼是公司表中的FK在fos_user表?我認爲'@ORM \ JoinColumn(name =「id」,referencedColumnName =「id」)'是錯誤的,因爲用戶類的id對於公司來說顯然不是FK?應該是'name =「company_id」'或者我想的東西。這不是真的關於symfony,但學說 – mask8 2012-07-21 22:48:48

+0

你是對的,我相應地更新了這個問題,雖然有一個問題仍然存在.. – 2012-07-21 22:55:05

+0

你是否堅持公司對象像$ em-> persist($ dummy)在你沖洗em之前?否則會發生錯誤。 – mask8 2012-07-21 23:14:11

回答

0

添加級聯堅持選項,用戶:: $公司財產註釋:

/** 
* @ORM\ManyToOne(targetEntity="BizTV\BackendBundle\Entity\company", cascade={"persist"}) 
* @ORM\JoinColumn(name="company", referencedColumnName="id") 
*/ 
protected $company; 

您可以找到相關的文檔在這裏:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-associations.html#transitive-persistence-cascade-operations

+0

我有類似的問題,它不適合我。 – chirag7jain 2013-04-01 19:18:17