无法将字段添加到我的用户类(Fos_UserBundle)

时间:2012-07-21 22:33:04

标签: php symfony fosuserbundle

我正在尝试修改我的用户类(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 \实体\公司@ 0000000018a5279000000000049c7b23。明确保留新实体或在关系上配置级联持久操作。如果您无法找出导致问题的实体,请执行'BizTV \ BackendBundle \ Entity \ company #__ toString()'以获取线索。

1 个答案:

答案 0 :(得分:0)

将cascade persist选项添加到User :: $ company属性注释:

/**
 * @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